👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
在毫米波 (mmWave) 通信的高移动性应用中,例如车联网通信和下一代蜂窝通信,频繁的链路配置可能会产生大量开销。我们使用sub-6 GHz信道协方差作为毫米波链路配置的带外侧信息。假设:(i) 6 GHz以下的全数字架构;(ii)模数混合架构 在毫米波,我们提出了带外协方差转换方法和带外辅助压缩协方差估计方法。对于协方差转换,我们估计了sub-6 GHz协方差的参数,并在协方差矩阵的理论表达式中使用它们来预测毫米波协方差。对于带外辅助协方差估计,我们使用加权稀疏信号恢复将带外信息纳入压缩协方差估计中。带外协方差平移完全消除了带内训练,而带外辅助协方差估计依赖于带内和带外训练。我们还分析了由于协方差估计不完全而导致的信噪比损失。仿真结果表明,与仅带内协方差估计相比,所提出的协方差估计策略可以降低训练开销。
📚2 运行结果
部分代码:
%% Channel input parameters
C=2; % Number of clusters
Rc=1e2; % Number of rays in a cluster
%
eta=[0.5;0.5]; % The power level of each cluster
%
sigma_theta=3*pi/180; % RMS arrival angle spread
sigma_phi=sigma_theta; % RMS departure angle spread
%
pl_coeff_s=3; % Pathloss coefficient at sub-6 GHz
pl_coeff_m=3; % Pathloss coefficient at mmWave
%
theta=[45];
theta=[5*ones(size(theta));theta]*pi/180; % The AoA of the first and second cluster
%
phi=theta; % The AoD (set to be same as the AoA)
%% Miscellaneous Parameters Calculated based on input
D_m=CP_m+1; % Number of taps in the wideband mmWave channel
eval_points_m=0:D_m-1;
%
D_s=CP_s+1; % Number of taps in the wideband sub-6 GHz channel
eval_points_s=0:D_s-1;
%
Pt_avg_m=10^((Pt_dBm_m-30)/10); % MmWave transmit power in watts
Pt_avg_s=10^((Pt_dBm_s-30)/10); % Sub-6 GHz transmit power in watts
%
lam_s=c/f_s; % Sub-6 GHz wavelength
lam_m=c/f_m; % MmWave wavelength
%
d0=5; % Reference distance
%
N0_dBm_m=-173.8+10*log10(BW_m); % MmWave Noise power in dBm
% 10*log10(kT)+30=-173.8, where k=1.381*10^(-23) is boltzman constant, and
% T=300 is temperature in kelvins, +30 is used to convert into dBm
% Total N0_dBm=10*log10(kTB)+30=10*log10(kT)+30*10*log10(B)
N0_dBm_s=-173.8+10*log10(BW_s); % Sub-6 GHz Noise power in dBm
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
girdpoints_RX=[-1+1/BRX:2/BRX:1-1/BRX];
%
aRX_mx=@(x) 1/sqrt(NRX_m)*exp(j*pi*[0:NRX_m-1]'*x); % x=sin(theta); receive array response vector for half-wavelength spacing at mmWave
%
ARX_m_tilde=aRX_mx(girdpoints_RX); % Mmwave RX dictionary (used in DCOMP and LWDCOMP)
%
aTX_sx=@(x) 1/sqrt(NTX_s)*exp(j*pi*[0:NTX_s-1]'*x); % x=sin(theta); transmit array response vector for half-wavelength spacing at sub-6 GHz
aRX_sx=@(x) 1/sqrt(NRX_s)*exp(j*pi*[0:NRX_s-1]'*x); % x=sin(theta); receive array response vector for half-wavelength spacing at sub-6 GHz
%
ARX_s_tilde=aRX_sx(girdpoints_RX); % Sub-6 GHz RX dictionary (used in calculating probability vector i.e., eq. (22))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
LUT_RX=LUT_calc_func(NRX_s); % Lookup table for spreadroot music
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Variables to store results
Eta_DCOMP=zeros(Ens,length(TX_RX_DIST)); % DCOMP
Eta_LWDCOMP=zeros(Ens,length(TX_RX_DIST)); % LWDCOMP
%%
Rth=eta(1)*Theoretical_Corr_Generator(theta(1),sigma_theta,NRX_m)+eta(2)*Theoretical_Corr_Generator(theta(2),sigma_theta,NRX_m);
%
[Um,~]=svds(Rth,Ns);
eta_den=trace(Um'*Rth*Um);
%% Main loop for ensemble averaging
for ee=1:Ens
par_m=[0 theta(1) phi(1); rand*10e-9 theta(2) phi(2)];
% 0 ToA for first path, and uniform at random between [0 and 10ns]
% for second path
par_s=par_m;
%% Loop over TX RX distance
for jj=1:length(TX_RX_DIST)
Tx_Rx_dist=TX_RX_DIST(jj);
fprintf('Ensemble averaging %d out of %d: distance tested %d out of %d \n',ee,Ens,jj,length(TX_RX_DIST))
%% SNR Calculations
pl_m=(4*pi*d0/lam_m)^2*(Tx_Rx_dist/d0)^pl_coeff_m; % linear version of alpha+10*beta*log10(d/d0), where alpha=10log10(4*pi*d0/lambda)^2
pl_s=(4*pi*d0/lam_s)^2*(Tx_Rx_dist/d0)^pl_coeff_s;
%
Pr_avg_dBm_m=Pt_dBm_m-10*log10(pl_m); % Average received power at mmWave
Pr_avg_dBm_s=Pt_dBm_s-10*log10(pl_s); % Average received power at sub-6 GHz
% linear version of alpha+10*beta*log10(d/d0), where alpha=10log10(4*pi*d0/lambda)^2
%
SNR_dB_m=Pr_avg_dBm_m-N0_dBm_m; % MmWave SNR in dB
SNR_dB_s=Pr_avg_dBm_s-N0_dBm_s; % Sub-6 GHz SNR in dB
%
SNR_m=10^(SNR_dB_m/10); % MmWave SNR in linear scale
SNR_s=10^(SNR_dB_s/10); % Sub-6 GHz SNR in linear scale
%
RRX_s=zeros(NRX_s);
for kk=1:snapshots
[homni_par_s]=omni_directional_channel_par_simplified(par_s,eta,Rc,C,sigma_theta,sigma_phi);
alpha_s=homni_par_s(:,1);tau_s=homni_par_s(:,2);sintheta_s=sin(homni_par_s(:,3));sinphi_s=sin(homni_par_s(:,4));
%% Actual Channel Generation
[H_s,H_s_freq]=MIMO_channel(NRX_s,NTX_s,D_s,eval_points_s,C,Rc,alpha_s,sintheta_s,sinphi_s,BW_s,tau_s,beta_s,K_s);
%% Noise Generation
Noise_s=sqrt(K_s)/sqrt(2*SNR_s)*(randn(NRX_s*NTX_s,K_s)+1j*randn(NRX_s*NTX_s,K_s));
% Noise Power is further multiplied by sqrt(N), because the overall
% signal power is divided into N subcarriers, hence the SNR on
% each tone is N times weaker compared to the total symbol SNR
%% Adding noise and obtaining correlation
H_s_barpn=H_s_freq+Noise_s;
H_temp=reshape(H_s_barpn,[NRX_s,NTX_s*K_s]);
RRX_s=RRX_s+(H_temp*H_temp')/NTX_s/K_s/snapshots;
end
%% Calculating probability vector for LW-DCOMP (absed on eq. 22 in the manuscript)
J_rho=0.1;
%
probRX=abs(mean(ARX_s_tilde'*RRX_s*ARX_s_tilde,1));
probRX=probRX/max(probRX);
probRX=J_rho*probRX;
%% MmWave Compressed correlation estimation
[RRXhat_DCOMP,RRXhat_LWDCOMP]=Compressed_Covariance_Estimation_simplified(MRX_m,NRX_m,NTX_m,ARX_m_tilde,...
Num_Qbits,snapshots,par_m,eta,Rc,C,sigma_theta,sigma_phi,D_m,eval_points_m,BW_m,...
beta_m,K_m,SNR_m,BRX,probRX);
%% Testing the conversion accuracy
[Umest_DCOMP,~]=svds(RRXhat_DCOMP,Ns);
[Umest_LWDCOMP,~]=svds(RRXhat_LWDCOMP,Ns);
%
eta_num_DCOMP=trace(Umest_DCOMP'*Rth*Umest_DCOMP);
eta_num_LWDCOMP=trace(Umest_LWDCOMP'*Rth*Umest_LWDCOMP);
%
Eta_DCOMP(ee,jj)=real(eta_num_DCOMP/eta_den);
Eta_LWDCOMP(ee,jj)=real(eta_num_LWDCOMP/eta_den);
end
end
%% Figure generation
figure,plot(TX_RX_DIST,mean(Eta_DCOMP,1),'b^-','linewidth',2,'MarkerSize',10);
hold on,plot(TX_RX_DIST,mean(Eta_LWDCOMP,1),'rd-','linewidth',2,'MarkerSize',10),hold on;
axis([TX_RX_DIST(1) TX_RX_DIST(end) 0 1])
le=legend({'LW-DCOMP','DCOMP'});le.Interpreter='latex';le.Location='southeast';le.FontSize=14;
xlabel('Transmitter-Receiver Distance (m)','Interpreter','latex'),ylabel('$\eta$','Interpreter','latex')
ax=gca;ax.TickLabelInterpreter='latex';ax.FontSize=14;
box off
grid on
%
axis tight
axlims=axis;
x_range=axlims(2)-axlims(1);
loseness=5;
axis([axlims(1)-loseness/1e2*x_range axlims(2)+loseness/1e2*x_range...
0-0.05 1+0.05])
%
% export_fig Fig6 -pdf -transparent
% save Res_Fig6
%
saveas(gcf, 'results/Fig6.png')
🌈3 Matlab代码实现
🎉4 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Anum Ali, Nuria González-Prelcic and Robert W. Heath Jr., "Spatial Covariance Estimation for Millimeter Wave Hybrid Systems using Out-of-Band Information", IEEE Transactions on Wireless Communications.