📄 alamouti.asv
字号:
M=4;
M1=2;
SNR_db=3:2:18; %仿真信噪比范围
L=length(SNR_db);
SNR=10.^(SNR_db/10);
Fd=1; %消息序列的采样速率
Fs=1; %已调信号的采样速率
N=100;
Ns=200;
x=zeros(Ns,1);
z1=zeros(Ns,1);
z2=zeros(Ns,1);
format long,BER1=zeros(2,L);
format long,BER2=zeros(2,L);
for m=1:2
for n=1:length(SNR)
nstd=sqrt(1/(4*SNR(n))); %QPSK调制下噪声方差
nstd1=sqrt(1/(2*SNR(n))); %BPSK调制下噪声方差
bit_err1=0;
bit_err2=0;
for p=1:N
noise=nstd*(randn(Ns,1)+i*randn(Ns,1));%产生噪声序列
noise1=nstd1*(randn(Ns,1)+i*randn(Ns,1));%产生噪声序列
H1=sqrt(0.5)*(randn(Ns,1)+i*randn(Ns,1));%产生信道矩阵系数
A= randint(Ns,1,M);
for i=1:Ns
AA=NumToBit(A(i),2);
AAA(2*i-1)=AA(1);
AAA(2*i)=AA(2);
end;
A1= randint(Ns,1,M1);
s1 =dmodce(A,Fd,Fs,'psk',M); %QPSK调制
s2 =dmodce(A1,Fd,Fs,'psk',M1); %BPSK调制
for q=1:Ns/2
H=Trans_2Tx(H1(2*q-1:2*q)); % 等效信道矩阵
r1=H*[s1(2*q-1);s1(2*q)]+noise(2*q-1:2*q); %QPSK接收信号
z1(2*q-1:2*q)=ddemodce(inv(H)*r1,Fd,Fs,'psk',M); %QPSK解调
r2=H*[s2(2*q-1);s2(2*q)]+noise1(2*q-1:2*q); %BPSK接收信号
z2(2*q-1:2*q)=ddemodce(inv(H)*r2,Fd,Fs,'psk',M1); %BPSK解调
end;
% for i=1:Ns
% BB=NumToBit(z1(i),2);
% BBB(2*i-1)=BB(1);
% BBB(2*i)=BB(2);
% end;
errors1 = biterr(A,z1);
errors2 = biterr(A1,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),'r*-',SNR_db, mean(BER2,1),'bs-');
legend('QPSK Alamouti code','BPSK Alamouti code');
xlabel('SNR(dB)');
ylabel('BER');
grid on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -