📄 a_j.m
字号:
M=4;
SNR_db=0:2:20; %仿真信噪比范围
L=length(SNR_db);
BER=zeros(10,L);
SNR=10.^(SNR_db/10);
Fd=1; %消息序列的采样速率
Fs=1; %已调信号的采样速率
N=500;
Ns=200;
z1=zeros(Ns,1);
z2=zeros(Ns,1);
format long;
BER1=zeros(10,L);
format long;
BER2=zeros(10,L);
for m=1:10
for n=1:length(SNR)
nstd=sqrt(1/(4*SNR(n)));
bit_err1=0;
bit_err2=0;
for p=1:N
noise=nstd*(randn(Ns,1)+i*randn(Ns,1)); %产生噪声序列
H=sqrt(0.5)*(randn(Ns,1)+i*randn(Ns,1)); %产生信道矩阵系数
A= randint(Ns,1,M);
s =dmodce(A,Fd,Fs,'psk',M); % 对A进行调制
for q=1:Ns/4
H2=Tran1(H(4*q-3:4*q)); %生成准正交传输矩阵
r2=H2*[s(4*q-3);s(4*q-2);s(4*q-1);s(4*q)]+noise(4*q-3:4*q); %接收的信号
z2(4*(q-1)+1:4*q)=ddemodce(inv(H2)*r2,1,1,'psk',M); %解调
end;
for q=1:Ns/2
H1=Trans_2Tx(H(2*q-1:2*q)); %Alamouti的传输矩阵
r1=H1*[s(2*q-1);s(2*q)]+noise(2*q-1:2*q);
z1(2*q-1:2*q)=ddemodce(inv(H1)*r1,1,1,'psk',M);
end;
errors1 = biterr(A,z1);
errors2 = biterr(A,z2);
bit_err1 = bit_err1 + errors1;
bit_err2 = bit_err2 + errors2;
end;
BER1(m,n)= bit_err1/(N*Ns);
BER2(m,n)= bit_err2/(N*Ns); %误码率计算
end;
end
semilogy(SNR_db, mean(BER1,1),'b-',SNR_db, mean(BER2,1),'r:');
legend('Alamouti code(2Tx 1Rx)','Jafarkhani code');
xlabel('SNR_db(dB)');
ylabel('BER');
grid on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -