请教各位高手帮忙翻译一下matlab程序!!!关于alamouti仿真的

h0=sqrt(0.5).*(randn(1,k/2)+j.*randn(1,k/2));
h1=sqrt(0.5).*(randn(1,k/2)+j.*randn(1,k/2));
s0=(pskmod(S0,2))/sqrt(2);
s1=(pskmod(S1,2))/sqrt(2);
R0=h0.*s0+h1.*s1;
R1=-conj(s1).*h0+h1.*conj(s0);
for i=1:length(SNRindB)
i
snr=10^(SNRindB(i)/10);
sgma=sqrt(1/snr/2);

r0=(R0+sgma.*(randn(1,k/2)+j*randn(1,k/2)));
r1=(R1+sgma.*(randn(1,k/2)+j*randn(1,k/2)));

s_0=conj(h0).*r0+h1.*conj(r1);
s_1=conj(h1).*r0-h0.*conj(r1);

m0=pskdemod(s_0,2);
m1=pskdemod(s_1,2);

er0(i)=nnz(S0-m0);
er1(i)=nnz(S1-m1);
err(i)=er0(i)+er1(i);
end
semilogy(SNRindB,err/k, '-r+');
grid on
xlabel('SNR, dB');
ylabel('BER');
hold on
% toc;

h0=sqrt(0.5).*(randn(1,k/2)+j.*randn(1,k/2));
h1=sqrt(0.5).*(randn(1,k/2)+j.*randn(1,k/2));
% 以上两行:h0和h1为信道参数,是个瑞利衰落。
s0=(pskmod(S0,2))/sqrt(2);
s1=(pskmod(S1,2))/sqrt(2);
% 以上两行:对基带信号进行BPSK调制
R0=h0.*s0+h1.*s1;
% MIMO发送端发出信号,发送天线0发出的信号
R1=-conj(s1).*h0+h1.*conj(s0);
% MIMO发送端发出信号,发送天线1发出的信号
for i=1:length(SNRindB)
i
snr=10^(SNRindB(i)/10);
sgma=sqrt(1/snr/2);
% 计算噪声的标准差
r0=(R0+sgma.*(randn(1,k/2)+j*randn(1,k/2)));
r1=(R1+sgma.*(randn(1,k/2)+j*randn(1,k/2)));
% r0 和 r1 为接收端接收加性白噪声的信号。
s_0=conj(h0).*r0+h1.*conj(r1);
s_1=conj(h1).*r0-h0.*conj(r1);
% 恢复出两个发送天线的发送信号

m0=pskdemod(s_0,2);
m1=pskdemod(s_1,2);
% 对两路信号进行BPSK解调
er0(i)=nnz(S0-m0);
er1(i)=nnz(S1-m1);
err(i)=er0(i)+er1(i);
% 求误码个数
end
semilogy(SNRindB,err/k, '-r+');
% 半对数轴画出误码率
grid on
xlabel('SNR, dB');
ylabel('BER');
hold on追问

麻烦再问下sgma=sqrt(1/snr/2); 这里为什么要除2呢?

还有程序中取了k=1000000;(我忘了贴上去)这个k是什么意思呀?
万分感谢!!!

追答

1.如果不加系数复基带信号功率是实信号功率的两倍,所以除以一个根2。
2.k应该就是表示码元个数。因为你要做蒙特卡洛实验,所以选择这么多码元,最后统计误码率用的。

温馨提示:答案为网友推荐,仅供参考
相似回答