👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
📚2 运行结果
🌈3 Matlab代码实现
🎉4 参考文献
💥1 概述
本文包括波束训练、MIMO 信道生成、DFT 码本构建。DFT码本是为平面天线阵列构建的。
📚2 运行结果

🌈3 Matlab代码实现
部分代码:
%% Clear workspace
clear;
 close all;
rng(0);
%% System parameters
fc = 30e9; % carrier frequency
 N = 64; % number of subcarriers
 L = 20; % number of clusters
 M = 20; % number of non-resolvable paths per cluster
 numRF = 1; % 1 data stream
% Antenna arrays - use isotropic antenna elements
 % Transmitter
 Ntv = 8;
 Nth = 8;
 Nt = Ntv*Nth;
 % Define tapers to reduce sidelobes
 dBdown = 30; % dB
 taperz = chebwin(Ntv,dBdown);
 tapery = chebwin(Nth,dBdown);
 tap = taperz*tapery.'; % Multiply vector tapers to get 8-by-8 taper values
 arrayTx = phased.URA('Size',[Ntv Nth],'ElementSpacing',[0.5*physconst('LightSpeed')/fc 0.5*physconst('LightSpeed')/fc],'Taper',tap);
 posTx = getElementPosition(arrayTx);
% Receiver
 Nrv = 4;
 Nrh = 4;
 Nr = Nrv*Nrh;
 % Define tapers to reduce sidelobes
 dBdown = 30; % dB
 taperz = chebwin(Nrv,dBdown);
 tapery = chebwin(Nrh,dBdown);
 tap = taperz*tapery.'; % Multiply vector tapers to get 8-by-8 taper values
 arrayRx = phased.URA('Size',[Nrv Nrh],'ElementSpacing',[0.5*physconst('LightSpeed')/fc 0.5*physconst('LightSpeed')/fc],'Taper',tap);
 posRx = getElementPosition(arrayRx);
%% DFT codebook
eleSpacing = 0.5; % element spacing, normalized by wavelength
 [beamTx,beamAngleTx,beamAngleElTx,beamAngleAzTx,beamElTx,beamAzTx] = getDFTCodebook(Ntv,Nth,eleSpacing,eleSpacing);
 [beamRx,beamAngleRx,beamAngleElRx,beamAngleAzRx,beamElRx,beamAzRx] = getDFTCodebook(Nrv,Nrh,eleSpacing,eleSpacing);
% % Check a certain beam (index:18) at transmitter
 % figure();pattern(arrayTx,fc,[-180:180],[-89:90],'PropagationSpeed',physconst('LightSpeed'),'CoordinateSystem','polar','Type','powerdb','Weights',beamTx(:,18));
 % 
 % % Check beam patterns in azimuth using linear array (transmitter)
 % array = phased.ULA('NumElements',Nth,'ElementSpacing',0.5*physconst('LightSpeed')/fc);
 % figure();
 % for n = 1:Nth
 %     pattern(array,fc,[-180:180],0,'PropagationSpeed',physconst('LightSpeed'),'CoordinateSystem','polar','Type','powerdb','Weights',beamAzTx(:,n));hold on;
 % end
%% Perform beam training
% Generate MIMO channels
 [h,arrayResponseTx,arrayResponseRx,pathGain] = MIMOChan(Nt,Nr,L,M,posTx,posRx);
 H = 1/sqrt(N)*fft(h,N,3); % frequency-domain channel
% Beam sweeping
 rPower = zeros(Nt,Nr,N);
🎉4 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Narengerile (2022). Beam training for OFDM-MIMO system with 1 RF chain














![[激光原理与应用-33]:典型激光器 -5- 不同激光器的全面、综合比较](https://img-blog.csdnimg.cn/img_convert/a6e952d1db2cb2738699cdd607c033a3.jpeg)




