📄 vblast1.m
字号:
close all;
clear
echo off
Tx_n = 4;
Rx_n = 4;
index = 2;
frame_length=1200;
SNRindB=0:2:20;
for i=1:length (SNRindB),
SNR(i)=10^(SNRindB(i)/10);
a=rand(1,frame_length);
for L=1:frame_length
if a(L)>.5
a(L)=1;
else a(L)=0;
end
end
a1=modulation(a,index);
a2=reshape(a1,Tx_n,frame_length/index/Tx_n);
sigma = 1/sqrt(2*Rx_n*SNR(i));
a5=zeros(4,frame_length/index/Tx_n);
AWGN_noise = sigma*(randn(Rx_n,frame_length/index/Tx_n)+j*randn(Rx_n,frame_length/index/Tx_n));
for k=1:frame_length/index/Tx_n
H=(randn(Rx_n,Tx_n)+j*randn(Rx_n,Tx_n))/sqrt(2);
r=H*a2(:,k)+AWGN_noise(:,k);
% ML检测算法
count=0:1:15;
count1=zeros(4,256);
a4=zeros(4,256);
for n1=1:16
for n2=1:16
d=[-1,1];
c1=de2bi(count(n2),4);
c1=d(c1+1);
c2=de2bi(count(n1),4);
c2=d(c2+1);
c=c1+j*c2;
count1(:,(n1-1)*16+n2)=c.';
a4(:,(n1-1)*16+n2)=r-H*count1(:,(n1-1)*16+n2);
end;
end;
[gk k0]=min(sum(abs(a4).^2,1));
a5(:,k)=count1(:,k0);
end
a6=reshape(a5,1,frame_length/index);
a7=demodulation(a6,index);
NumErr1 =sum(a7~=a)
Ber1(i)=NumErr1/frame_length;
end
semilogy (SNRindB,Ber1,'-o');
grid on
xlabel('Eb/No in dB');
ylabel('error probability');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -