自适应MSER波束形成辅助接收机的MATLAB性能仿真

一、理论基础

运用波束形成技术,利用麦克风阵列估计指定方向上的混有噪声和干扰的期望信号。这些麦克风阵元位于不同的空间位置,对声波进行空间采样,然后对采样信号进行处理以衰减干扰信号并提取期望信号。这样就得到一个特定的阵列空间响应,其主瓣指向期望信号而对干扰进行陷波。

自适应波束形成能够分离在相同载波频率上传输的用户信号,因此提供了在空分多址场景中支持多用户的实用手段。此外,为了进一步提高可实现的带宽效率,高吞吐量正交幅度调制QAM方案在许多无线网络标准中变得流行,特别是在最近的WiMax标准中。多天线辅助多用户系统的自适应波束形成辅助检测其采用高阶QAM信令。

传统上,最小均方误差(MMSE)自适应波束形成辅助接收机的设计被认为是最先进的。然而,最近工作[1]提出了一种新的波束形成辅助最小符号误码率(MSER)设计并且证明了这种MSER设计提供了显著的性能增强,在可实现的符号错误率方面超过标准MMSE设计。该MSER波束形成设计在此贡献中得到充分发展。特别是MSER的自适应实现详细研究了波束形成算法,即最小符号误码率算法。在仿真中评估了所提出的自适应MSER波束形成方案,并与自适应MMSE波束形成基准。

该算法的流程和理论公式如下:

自适应MSER波束形成辅助接收机的MATLAB仿真_自适应

自适应MSER波束形成辅助接收机的MATLAB仿真_自适应_02



二、MATLAB程序

登录后复制

clc;clear;close all;warning off;SNR_set      = [10:1:24];BER          = 1;nRx          = 4;nTx          = 3;
frame_length = 1000;Bers         = [];%论文table 2alpha        = [0,-70,65,32];SIR          = [0,0,0,0];
for SNR = SNR_set;    N0          = 1/(10^(SNR/10));    delta2      = N0;    error_count = 0;    
bit_count   = 0;    index       = 0;    ERR_NUM     = [];    tmps        = 0;    
while error_count < 500000        index = index+1;        for kk=1:nTx            
bits(kk,:)    =  round(rand(1,frame_length));            symbols(kk,:) = qammod(bits(kk,:),16);        
end        %transmit signal        s        = symbols;         u        = reshape(s,nTx,nRx,length(s)/nRx);
 %Channel        h        = 1/sqrt(2)*[randn(nRx,nTx,length(s)/nRx) + j*randn(nRx,nTx,length(s)/nRx)];        
 for ij = 1:nTx            p(:,ij,:) = h(:,ij,:).*exp(j*alpha(ij)*pi/180);        end        
 %mmse beamforming        WK  = [];        WK2 = [];        w   = [];        LMS = zeros(1,length(s)/nRx);
dt  = [];        for i=1:length(s)/nRx            for ii = 1:length(SIR)                
u2(:,ii) = u(:,ii,i)*10^(SIR(ii)/10);             end            XN(:,:,i)= awgn(u2,SNR,'measured');
%定义接收信号            w(:,:,i) = inv(p(:,:,i)*p(:,:,i)'+2*delta2^2*eye(nRx))*p(:,1,i);            
Nsb      = nRx;            M        = nRx;            r        =(2*sqrt(M)-2)/sqrt(M);            
if i == 1               WK =  w(:,:,i)'*p(:,:,i);               dt = -0.0001*[ones(1,Nsb)]';            
else               bk          = bits(1,nRx*(i-2)+1:nRx*(i-1));                bk          = 2*bk-1;
x1_         = bk;               p1          = p(:,1,i);               yr          = real(yhat(:,:,i-1));
cr          = real(w(:,:,i));               for iii = 1:Nsb                   l       = iii;
ul      = 2*l-sqrt(M) - 1;                   Rt{iii} =  exp(-(yr(iii) - cr(iii)*(ul-1))^2/(2*delta2^2))*
((yr(iii) - cr(iii)*(ul-1))*w(:,:,i) - x1_(iii) + (ul-1)*p1);               end               
PER=  r/(2*Nsb*sqrt(2*pi)*delta2) * (Rt{1} + Rt{2} + Rt{3} + Rt{4});               yi          
= imag(yhat(:,:,i-1));               ci          = imag(w(:,:,i));               for iii = 1:Nsb
q       = iii;                   uq      = 2*q-sqrt(M) - 1;                   
It{iii} =  exp(-(yi(iii) - ci(iii)*(uq-1))^2/(2*delta2^2))*((yi(iii) - ci(iii)*(uq-1))*w(:,:,i) + 
sqrt(-1)*x1_(iii) + (uq-1)*p1);               end               PEI=  r/(2*Nsb*sqrt(2*pi)*delta2) * 
(It{1} + It{2} + It{3} + It{4});               PEB=  PER + sqrt(-1)*PEI;                              
for is = 1:length(PEB)                   if isnan(abs(PEB(is))) == 1                      PEB(is) = 1;
end               end               WWt(:,i-1) = PEB;               if i>3                  
fai=max(min((abs(WWt(:,i-1)).^2)./(abs(WWt(:,i-2)).^2),1),0);               else                  
fai=ones(nRx,1);                end               dt          = fai.*dt - PEB;               miu         
= 5e-6;               WK          = WK + miu*[dt(1:nTx)]';                            end       
= WK/(max(abs(WK)));            yhat(:,:,i) = WK*XN(:,:,i);            R1          = real(yhat(:,:,i)); 
I1          = imag(yhat(:,:,i));            s_hat(:,:,i)= qamdemod(R1+sqrt(-1)*I1,16);        
end        s_hat1               = squeeze(s_hat);        recovered_bits       = reshape(s_hat1,1,length(s));
ERR_NUM              = sum(recovered_bits ~= bits(1,:));        %异常错误不进行统计%         
if index <= 200%            tmps  = tmps + ERR_NUM; %         else%            
        if ERR_NUM/(tmps/200) < 20              SNR              error_count              
        error_count    = error_count + ERR_NUM;              bit_count      = bit_count + frame_length;
%            end%         end    end    %Calculate the BER    BER  = error_count/bit_count;    
Bers = [Bers,BER];enderror_countbit_countfigure;semilogy(SNR_set,Bers,'b-o');axis([10,40,1.0001e-6,1]);
ylabel('BER');xlabel('SNR');grid on% save r2ber.mat SNR_set Bers 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.
18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.
54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.
90.91.92.93.94.95.96.97.98.99.100.101.102.103.104.105.106.107.108.109.110.111.112.113.114.115.116.117.118.119.
120.121.122.123.124.125.126.127.128.129.130.131.132.

三、仿真结论

仿真结果如下:

自适应MSER波束形成辅助接收机的MATLAB仿真_自适应_03

自适应MSER波束形成辅助接收机的MATLAB仿真_开发语言_04


自适应MSER波束形成辅助接收机的MATLAB仿真_波束形成辅助接收机_05


提出了一种用于多天线辅助的自适应MSER波束形成技术采用高通量QAM信令的多用户通信系统。已经证明了MSER波束形成设计可以在可实现系统的SER方面提供比标准MMSE设计显著的性能增强。它已经还已经证明,MSER波束形成设计提供了更高的用户容量与传统的MMSE波束形成相比,在远近传感器中更为鲁棒设计已经使用称为LSER技术的随机梯度自适应算法实现了MSER波束形成解决方案的自适应实现。模拟研究结果清楚地表明,自适应LSER波束形成能够:在快速衰落条件下成功运行,其性能始终优于自适应LMS波束形成基准。




免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空