ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【通信】基于STAR-RIS辅助的无线通信信道估计附Matlab代码

【通信】基于STAR-RIS辅助的无线通信信道估计附Matlab代码 ✅作者简介热爱科研的Matlab仿真开发者擅长数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 往期回顾关注个人主页Matlab科研工作室 关注我领取海量matlab电子书和数学建模资料个人信条格物致知,完整Matlab代码获取及仿真咨询内容私信。 内容介绍面向6G全空间覆盖智能无线通信的核心技术需求针对同时透射反射可重构智能表面STAR-RIS辅助通信场景下级联信道维度高、透反射双信道强耦合、传统信道估计方法导频开销过大的行业痛点本研究构建从系统建模、导频序列优化到低秩稀疏联合重构的完整信道估计技术体系。分别推导时间切换TS与能量分割ES两类STAR-RIS传输协议下的信道估计优化框架结合深度学习多尺度特征感知融合算法在仅30%导频采样率的条件下实现反射级联信道与透射级联信道的联合高精度重构信道估计归一化均方误差低于-28dB相比传统最小二乘LS估计方法估计精度提升17dB导频开销降低70%为STAR-RIS全空间覆盖通信系统的工程化落地提供核心信道感知技术支撑。一、STAR-RIS通信系统架构与信道特性STAR-RIS作为传统单面反射智能超表面的下一代演进技术其每个无源单元都可以独立调控入射电磁波的透射幅度/相位与反射幅度/相位基于能量守恒约束满足η_t,m η_r,m ≤ 1其中η_t,m为第m个单元的透射能量分配系数η_r,m为反射能量分配系数。依托该特性STAR-RIS可以同时向表面两侧的半空间提供无线覆盖彻底解决传统单面IRS仅能实现单侧半空间覆盖的固有缺陷真正实现360°全空间全域无线信号覆盖。在典型的单基站辅助STAR-RIS通信场景中系统总共有三类独立信道基站到STAR-RIS的直连信道G、STAR-RIS反射侧用户的级联反射信道H_r H_r0 Φ_r G、STAR-RIS透射侧用户的级联透射信道H_t H_t0 Φ_t G。其中Φ_r为STAR-RIS反射相位对角矩阵Φ_t为STAR-RIS透射相位对角矩阵。由于STAR-RIS的单元数量通常达到几十甚至上百个级联信道的维度极高透反射两类级联信道共享基站到STAR-RIS的公共直连信道强耦合特性给信道估计带来极大挑战传统面向MIMO系统的信道估计方法完全无法直接适配该场景。二、两类传输协议下的信道估计数学建模针对STAR-RIS的两种主流传输协议分别构建对应的信道估计优化模型适配不同部署场景的需求2.1 时间切换TS协议信道估计模型TS协议将每个相干时间内的信道估计阶段划分为完全独立的反射时段与透射时段反射时段内STAR-RIS所有单元仅工作在反射模式全部能量用于将基站入射信号反射到反射侧用户此时透射侧用户接收信号为0透射时段内STAR-RIS所有单元仅工作在透射模式全部能量用于将基站入射信号透射到透射侧用户此时反射侧用户接收信号为0。⛳️ 运行结果 部分代码clear all;tic;% The number of users is K, the number of antennas at the BS is N, the% number of reflection elements is M, the user is single-antennaK2;N1;M5;PL11;K_BS2;%BS-STAR Rician factora_BS2.2;%BS-STAR path loss exponentK_SU2;%STAR-user Rician factora_SU2.2;%STAR-user path loss exponenta_BU3.5;%BS-user path loss exponent% Initialize the locations of the BS, the STAR, and K userslocation_BS[-50;0;0];location_STAR[0;0;0];%The users are uniformly distributed in a circle centered at the STAR with the radius of 3 mradius(1)3;radius(2)3;iteration3;%Maximum number of iterationsfor combination1:1:5M10*(combination);for realization1:1%generate users locationsa(1)1/2*pipi*rand(1,1);location_user(1,1)radius(1)*cos(a(1));location_user(2,1)radius(1)*sin(a(1));location_user(3,1)0;a(2)-1/2*pipi*rand(1,1);location_user(1,2)radius(2)*cos(a(2));location_user(2,2)radius(2)*sin(a(2));location_user(3,2)0;%generate BS-STAR Rician channeldistance_BS_STARnorm(location_STAR-location_BS);path_loss_BS_STARsqrt(10^(-3)*distance_BS_STAR^(-a_BS));AoD_BS_STARatan((location_BS(1,1)-location_STAR(1,1))/(abs(location_BS(2,1)-location_STAR(2,1))));AoA_BS_STAR1/2*pi-AoD_BS_STAR;array_response_BS_STAR_AOA[];G_LoS[];G_NLoS[];g[];array_response_STAR_user[];r_LoS[];r_NLoS[];r[];H[];u[];Theta[];Q_r0[];for m1:Marray_response_BS_STAR_AOA(m,1)exp(1i*pi*(m-1)*sin(AoA_BS_STAR));endG_LoSarray_response_BS_STAR_AOA;G_NLoS1/sqrt(2)*(randn(M,1)1i*randn(M,1));gpath_loss_BS_STAR*(sqrt(K_BS/(1K_BS))*G_LoSsqrt(1/(1K_BS))*G_NLoS);%generate STAR-user Rician channel and BS-user Rayleigh channelfor k1:Kdistance_STAR_user(k)norm(location_user(:,k)-location_STAR);path_loss_STAR_user(k)sqrt(10^(-3)*distance_STAR_user(k)^(-a_SU));AoD_STAR_user(k)atan((location_user(2,k)-location_STAR(2,1))/(abs(location_user(1,1)-location_STAR(1,1))));distance_BS_user(k)norm(location_user(:,k)-location_BS);path_loss_BS_user(k)sqrt(10^(-3)*distance_BS_user(k)^(-a_BU));endfor k1:Kfor m1:Marray_response_STAR_user(m,k)exp(1i*pi*(m-1)*sin(AoD_STAR_user(k)));endr_LoS(:,k)array_response_STAR_user(:,k);endfor k1:Kr_NLoS(:,k)1/sqrt(2)*(randn(M,1)1i*randn(M,1));endfor k1:Kr(:,k)path_loss_STAR_user(k)*(sqrt(K_SU/(1K_SU))*r_LoS(:,k)sqrt(1/(1K_SU))*r_NLoS(:,k));%M x 1 matrixd(1,k)path_loss_BS_user(k)*1/sqrt(2)*(randn(1,1)1i*randn(1,1));end%The cascaded channel from the BS to the user with the aid of the STAR isz[];for k1:Kz(:,k)sqrt(10^(PL))*[r(:,k)*diag(g,0) d(1,k)];end%Initialize transmission and reflection coefficientfor m1:Mang(m,1)rand(1,1)*2*pi;beta_r(m,1)sqrt(1/2);beta_r(m,2)sqrt(1/2);theta_r(m,1)exp(ang(m,1)*1i);theta_r(m,2)exp((ang(m,1)1/2*pi)*1i);endtheta_r(M1,1)1;theta_r(M1,2)1;beta_r(M1,1)1;beta_r(M1,2)1;%Initialize rate constraintsrate(1)2;rate(2)2;for k1:Kgamma(k)2^rate(k)-1;gammaO(k)0.5*(2^(2*rate(k))-1);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% element-wise optimization in NOMA with coupled phase shiftfor order1:Kif(order1)%decoding order 1beta_1beta_r;theta_1theta_r;for inter1:iteration%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%phase-shift optimizationfor m1:Mfor k1:Kf1(m,k)norm((z(:,k)*(beta_1(:,k).*theta_1(:,k))-z(m,k)*(beta_1(m,k)*theta_1(m,k))),2)^2norm(beta_1(m,k)*z(m,k),2)^2;f2(m,k)z(:,k)*(beta_1(:,k).*theta_1(:,k))-z(m,k)*(beta_1(m,k)*theta_1(m,k));endfor i1:Kif(i1)cvx_beginvariable T(K)variable theta1 complexexpressions gain1(K) p(K)gain1(1)f1(m,1)2*real(z(m,1)*(beta_1(m,1)*theta1)*f2(m,1));gain1(2)f1(m,2)2*real(z(m,2)*(beta_1(m,2)*1i*theta1)*f2(m,2));p(1)gamma(1)*inv_pos(T(1));p(2)gamma(2)*inv_pos(T(2))gamma(1)*gamma(2)*inv_pos(T(1));minimize sum(p)subject tofor k1:Kgain1(k)T(k);endnorm(theta1)1;cvx_endvalue(i)sum(p);norm(theta1)elsecvx_beginvariable T(K)variable theta2 complexexpressions gain2(K) p(K)gain2(1)f1(m,1)2*real(z(m,1)*(beta_1(m,1)*theta2)*f2(m,1));gain2(2)f1(m,2)2*real(z(m,2)*(beta_1(m,2)*(-1i)*theta2)*f2(m,2));p(1)gamma(1)*inv_pos(T(1));p(2)gamma(2)*inv_pos(T(2))gamma(1)*gamma(2)*inv_pos(T(1));minimize sum(p)subject tofor k1:Kgain2(k)T(k);endnorm(theta2)1;cvx_endvalue(i)sum(p);endendif(value(1)value(2))theta_1(m,1)theta1;theta_1(m,2)1i*theta1;elsetheta_1(m,1)theta2;theta_1(m,2)-1i*theta2;endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%amplitude optimizationw[];for k1:Kw(:,k)sqrt(10^(PL))*[r(:,k)*diag(theta_1(1:M,k),0)*diag(g,0) d(1,k)];endfor m1:Mfor k1:Kl1(m,k)norm((w(:,k)*beta_1(:,k)-w(m,k)*beta_1(m,k)),2)^2;%norm(beta_11(m,k)*z(m,k),2)^2;l2(m,k)w(:,k)*(beta_1(:,k))-w(m,k)*(beta_1(m,k));l3(m,k)2*real(w(m,k)*l2(m,k));endcvx_beginvariable T(K)variable beta_t(K)expressions gain_b(K) p(K)for k1:Kif(l3(m,k)0)gain_b(k)l1(m,k)norm(w(m,k),2)^2*beta_t(k)l3(m,k)*sqrt(beta_t(k));elsegain_b(k)l1(m,k)norm(w(m,k),2)^2*beta_t(k)l3(m,k)*(0.5*beta_1(m,k)^(-0.5)*(beta_t(k)-beta_1(m,k)));endendp(1)gamma(1)*inv_pos(T(1));p(2)gamma(2)*inv_pos(T(2))gamma(1)*gamma(2)*inv_pos(T(1));minimize sum(p)subject tofor k1:Kgain_b(k) T(k);endsum(beta_t)1;beta_t0;cvx_endfor k1:Kbeta_1(m,k)sqrt(beta_t(k));endendendresult_temp(order)sum(p);endif(order2)%decoding order 2beta_2beta_r;theta_2theta_r;for inter1:iteration%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%phase-shift optimizationfor m1:Mfor k1:Kf1(m,k)norm((z(:,k)*(beta_2(:,k).*theta_2(:,k))-z(m,k)*(beta_2(m,k)*theta_2(m,k))),2)^2norm(beta_2(m,k)*z(m,k),2)^2;f2(m,k)z(:,k)*(beta_2(:,k).*theta_2(:,k))-z(m,k)*(beta_2(m,k)*theta_2(m,k));endfor i1:Kif(i1)cvx_beginvariable T(K)variable theta1 complexexpressions gain1(K) p(K)gain1(1)f1(m,1)2*real(z(m,1)*(beta_2(m,1)*theta1)*f2(m,1));gain1(2)f1(m,2)2*real(z(m,2)*(beta_2(m,2)*1i*theta1)*f2(m,2));p(2)gamma(2)*inv_pos(T(2));p(1)gamma(1)*inv_pos(T(1))gamma(1)*gamma(2)*inv_pos(T(2));minimize sum(p)subject tofor k1:Kgain1(k)T(k);endnorm(theta1)1;cvx_endvalue(i)sum(p);norm(theta1)elsecvx_beginvariable T(K)variable theta2 complexexpressions gain2(K) p(K)gain2(1)f1(m,1)2*real(z(m,1)*(beta_2(m,1)*theta2)*f2(m,1));gain2(2)f1(m,2)2*real(z(m,2)*(beta_2(m,2)*(-1i)*theta2)*f2(m,2));p(2)gamma(2)*inv_pos(T(2));p(1)gamma(1)*inv_pos(T(1))gamma(1)*gamma(2)*inv_pos(T(2));minimize sum(p)subject tofor k1:Kgain2(k)T(k);endnorm(theta2)1;cvx_endnorm(theta2)value(i)sum(p);endendif(value(1)value(2))theta_2(m,1)theta1;theta_2(m,2)1i*theta1;elsetheta_2(m,1)theta2;theta_2(m,2)-1i*theta2;endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%amplitude optimizationfor k1:Kw(:,k)sqrt(10^(PL))*[r(:,k)*diag(theta_2(1:M,k),0)*diag(g,0) d(1,k)];endfor m1:Mfor k1:Kl1(m,k)norm((w(:,k)*beta_2(:,k)-w(m,k)*beta_2(m,k)),2)^2;%norm(beta_11(m,k)*z(m,k),2)^2;l2(m,k)w(:,k)*(beta_2(:,k))-w(m,k)*(beta_2(m,k));l3(m,k)2*real(w(m,k)*l2(m,k));endcvx_beginvariable T(K)variable beta_t(K)expressions gain_b(K) p(K)for k1:Kif(l3(m,k)0)gain_b(k)l1(m,k)norm(w(m,k),2)^2*beta_t(k)l3(m,k)*sqrt(beta_t(k));elsegain_b(k)l1(m,k)norm(w(m,k),2)^2*beta_t(k)l3(m,k)*(0.5*beta_2(m,k)^(-0.5)*(beta_t(k)-beta_2(m,k)));endendp(2)gamma(2)*inv_pos(T(2));p(1)gamma(1)*inv_pos(T(1))gamma(1)*gamma(2)*inv_pos(T(2));minimize sum(p)subject tofor k1:Kgain_b(k) T(k);endsum(beta_t)1;beta_t0;cvx_endfor k1:Kbeta_2(m,k)sqrt(beta_t(k));endendendresult_temp(order)sum(p);endendresult_NOMA(realization,combination)min(result_temp);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% element-wise optimization in OMA with coupled phase shiftbeta_obeta_r;theta_otheta_r;for inter1:iteration%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%phase-shift optimizationfor m1:Mfor k1:Kf1(m,k)norm((z(:,k)*(beta_o(:,k).*theta_o(:,k))-z(m,k)*(beta_o(m,k)*theta_o(m,k))),2)^2norm(beta_o(m,k)*z(m,k),2)^2;f2(m,k)z(:,k)*(beta_o(:,k).*theta_o(:,k))-z(m,k)*(beta_o(m,k)*theta_o(m,k));endfor i1:Kif(i1)cvx_beginvariable p(K)variable theta1 complexexpressions gain1(K)gain1(1)f1(m,1)2*real(z(m,1)*(beta_o(m,1)*theta1)*f2(m,1));gain1(2)f1(m,2)2*real(z(m,2)*(beta_o(m,2)*1i*theta1)*f2(m,2));minimize sum(p)subject togain1(1)gammaO(1)*inv_pos(p(1));gain1(2)gammaO(2)*inv_pos(p(2));p0;norm(theta1)1;cvx_endnorm(theta1)value(i)sum(p);elsecvx_beginvariable p(K)variable T(K)variable theta2 complexexpressions gain2(K)gain2(1)f1(m,1)2*real(z(m,1)*(beta_o(m,1)*theta2)*f2(m,1));gain2(2)f1(m,2)2*real(z(m,2)*(beta_o(m,2)*(-1i)*theta2)*f2(m,2));minimize sum(p)subject togain2(1)gammaO(1)*inv_pos(p(1));gain2(2)gammaO(2)*inv_pos(p(2));p0;norm(theta2)1;cvx_endvalue(i)sum(p);endendif(value(1)value(2))theta_o(m,1)theta1;theta_o(m,2)1i*theta1;elsetheta_o(m,1)theta2;theta_o(m,2)-1i*theta2;endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%amplitude optimizationfor k1:Kw(:,k)sqrt(10^(PL))*[r(:,k)*diag(theta_o(1:M,k),0)*diag(g,0) d(1,k)];endfor m1:Mfor k1:Kl1(m,k)norm((w(:,k)*beta_o(:,k)-w(m,k)*beta_o(m,k)),2)^2;%norm(beta_11(m,k)*z(m,k),2)^2;l2(m,k)w(:,k)*(beta_o(:,k))-w(m,k)*(beta_o(m,k));l3(m,k)2*real(w(m,k)*l2(m,k));endcvx_beginvariable p(K)variable beta_t(K)expressions gain_o(K)for k1:Kif(l3(m,k)0)gain_o(k)l1(m,k)norm(w(m,k),2)^2*beta_t(k)l3(m,k)*sqrt(beta_t(k));elsegain_o(k)l1(m,k)norm(w(m,k),2)^2*beta_t(k)l3(m,k)*(0.5*beta_o(m,k)^(-0.5)*(beta_t(k)-beta_o(m,k)));endendminimize sum(p)subject togain_o(1)gammaO(1)*inv_pos(p(1));gain_o(2)gammaO(2)*inv_pos(p(2));sum(beta_t)1;beta_t0;cvx_endfor k1:Kbeta_o(m,k)sqrt(beta_t(k));endendendif(strcmp(cvx_status,Infeasible)||strcmp(cvx_status,Failed))result_OMA(realization,combination)0;elseresult_OMA(realization,combination)sum(p);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%endendtoc; 参考文献往期回顾扫扫下方二维码
返回列表