【信号处理】毫米波的空间协方差估计使用带外信息的混合系统(Matlab代码实现)

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🌈3 Matlab代码实现

🎉4 参考文献


💥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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值