MATLAB中V-Blast的ZF和MMSE检测算法仿真代码

更新时间:2024-03-24 02:03:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MATLAB中V-Blast的ZF和MMSE检测算法仿真代码

发送天线m1,接受天线m2,高斯白噪声,ZF时的仿真程序

% 发射天线数tx,接收天线数rx,发射矩阵长度L(帧长) tx=m1;rx=m2;L=10000; Modulation='BPSK';

EbN0=[0:5:20];

B=30000;Ts=1/24300;

% 建立EbN0与SNR之间的换算关系 SNR=EbN0-10*log10(Ts*B); % 信源A

A=randint(tx*L,1);

% 经过BPSK调制的V-Blast发射矩阵X X=zeros(tx,L); for k=1:tx

X(k,:)=(-1).^(A(k:tx:end)+1); end

% 信道传输============================================================ % 快衰落高斯信道H

H=sqrt(1/2)*(randn(rx,tx,L));

% 均值为0方差为1的高斯白噪声n n=sqrt(1/2)*(randn(rx,L)); % 未叠加噪声的接收信号R R=zeros(rx,L); for k=1:L

R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k); end

% 检测

%ZF================================================================== disp('berz'); berz=[];

% 在不同的信噪比下计算ZF接收机误比特率berz for m=SNR

m

% 每个子信道的平均信噪比为snr的接受信号R_noised snr=10^(m/10); R_noised=awgn(R,m,1); x=[];

a=zeros(tx*L,1);

% 逐时隙对接收符号矢量进行检测,合并得到一帧发射矩阵X的估计x for t=1:L

r=R_noised(:,t); % 迫零矩阵G G=pinv(H(:,:,t)); y=G*r; xtemp=(y>=0)-(y<0)+0; x=[x,xtemp]; end

% 从x求A的估计a for k=1:tx

a(k:tx:end)=(x(k:tx:end)+1)/2; end

% 比较A和a计算错值率temp_ber [errbit,temp_ber]=biterr(A,a); berz=[berz,temp_ber]; end

semilogy(EbN0,berz,'o- r'),grid on xlabel('Eb/N0(dB)'); ylabel('误比特率');

title('不同天线配置ZF系统仿真传输特性')

text(9,0.15,'\\fontsize{14}\\color{red}\\fontname{隶书}2*2') hold on

发送天线m1,接受天线m2,高斯白噪声,MMSE时的仿真程序

% 发射天线数tx,接收天线数rx,发射矩阵长度L(帧长) tx=m1;rx=m2;L=10000; Modulation='BPSK';

EbN0=[0:5:20];

B=30000;Ts=1/24300;

% 建立EbN0与SNR之间的换算关系 SNR=EbN0-10*log10(Ts*B); % 信源A

A=randint(tx*L,1);

% 经过BPSK调制的V-Blast发射矩阵X X=zeros(tx,L); for k=1:tx

X(k,:)=(-1).^(A(k:tx:end)+1);

end

% 信道传输============================================================ % 快衰落高斯信道H

H=sqrt(1/2)*(randn(rx,tx,L));

% 均值为0方差为1的高斯白噪声n n=sqrt(1/2)*(randn(rx,L));

% 未叠加噪声的接收信号R R=zeros(rx,L); for k=1:L

R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k); end

% 检测

%MMSE=============================================================== disp('berz');

berz=[];

% 在不同的信噪比下计算ZF接收机误比特率berz for m=SNR

m

% 每个子信道的平均信噪比为snr的接受信号R_noised snr=10^(m/10);

R_noised=awgn(R,m,3);

x=[];

a=zeros(tx*L,1);

% 逐时隙对接收符号矢量进行检测,合并得到一帧发射矩阵X的估计x for t=1:L

r=R_noised(:,t);

HH=H(:,:,t); xtemp=zeros(tx,1);

w=inv(HH'*HH+(1/snr)*eye(tx))*HH'; y=w*r; xtemp=(y>=0)-(y<0)+0; x=[x,xtemp]; end

% 从x求A的估计a

for k=1:tx

a(k:tx:end)=(x(k:tx:end)+1)/2; end

% 比较A和a计算错值率temp_ber [errbit,temp_ber]=biterr(A,a); berz=[berz,temp_ber]; end

semilogy(EbN0,berz,'o- b'),grid on xlabel('Eb/N0(dB)'); ylabel('误比特率');

title('不同天线配置MMSE系统仿真传输性能') text(8,0.08,'\\fontsize{14}\\color{blue}\\fontname{隶书}1*2') hold on

本文来源:https://www.bwwdw.com/article/dbg8.html

Top