📄 stbc4.asv
字号:
clear all;
SNR=0:3:30;
snr=10.^(SNR/10);
sigma=sqrt(2./snr);%噪声与信号的幅度比值
K=4000; %未调制信号长度,信号越长,曲线越精确
data=randint(1,K);
%%%%%%%%%%%%%%%%%%%%设置参数%%%%%%%%%%%%%%%%%%%%%%%%
nt=4;%发射天线数
nr=1;%接收天线数
n=2; %调制方式BPSK
%%%%%%%%%%%%%%%%%%%%BPSK信号调制%%%%%%%%%%%%%%%%%%%%
bpskdata=zeros(1,K);
for i=1:K
bpskdata(i)=(-1)^data(i);
end
x=bpskdata; %调制后信号
%%%%%%%%%%%%%%%%%%%Alamouti%%%%%%%%%%%%%%%%%%%%%%%%
for k=1:length(SNR)
error_symbol=0;%对每一个信噪比下的误符号率清零
for i=1:length(bpskdata)/4
x1=x(4*i-3);
x2=x(4*i-2); %对信源进行空时操作,每两个数据符号一起
x3=x(4*i-1);
x4=x(4*i); %对信源进行空时操作,每两个数据符号一起
X=[x1 -x2 -x3 -x4
x2 x1 x4 -x3
x3 -x4 x1 x2
x4 x3 -x2 x1];%空时发射信号矩阵
h=rey(nt,nr); %调用信道子函数
noise=sigma(k).*rey(nt,nr);
r=sqrt(1/2).*H*X+noise;
H=[h(1) h(2) h(3) h(4)
h(2) -h(1) h(4) -h(3)
h(3) -h(4) -h(1) h(2)
h(4) h(3) -h(2) -h(1)] %接收信号矩阵
y=zeros(nt,1);
y(1)= r(1,1)*H(1,1)'+r(1,2)*H(1,2)'+r(1,3)*H(1,3)'+r(1,4)*H(1,4)';
y(2)= r(1,1)*H(1,2)'-r(1,2)*H(1,1)'-r(1,3)*H(1,4)'+r(1,4)*H(1,3)';
y(3)= r(1,1)*H(1,3)'+r(1,2)*H(1,4)'-r(1,3)*H(1,1)'-r(1,2)*H(1,2)';
y(4)= r(1,1)*H(1,4)'-r(1,2)*H(1,3)'+r(1,3)*H(1,2)'-r(1,2)*H(1,1)';
%进行最大似然检测
DEC_X=judge(y);
%统计符号错误的总数
if DEC_X(1)~=x1
error_symbol=error_symbol+1;
end
if DEC_X(2)~=x2
error_symbol=error_symbol+1;
end
if DEC_X(3)~=x3
error_symbol=error_symbol+1;
end
if DEC_X(4)~=x4
error_symbol=error_symbol+1;
end
end
SER(k)=error_symbol/length(bpskdata);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%画图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
semilogy(SNR,SER,'b*-');
grid on
legend('STBC4 BPSK(4TX 1RX)')
title('BPSK调制下的4天线实信号STBC在慢瑞利衰减信道上的误符号率性能')
xlabel('信噪比/dB');
ylabel('误符号率');
hold on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -