📄 alamoutiwork.m
字号:
%*************************************************************************
%***程序的主要功能是做了一定范围的信噪比下,对每个信噪比:随机信号QPSK调制;
%***根据Alamouti方案的矩阵进行编码;发送信号经过瑞利信道和加入高斯白噪声;
%***接收信号采用最大比合并的方法;最后对合并信号进行最大似然判决并
clc
clear all;
SNR=0:20;
snr=10.^(SNR/10);
% sigma=1./snr;
Es=1;
sgma=sqrt(0.5*Es./snr); % variance of the Gaussian white noise
N=1000000;
error_symbols=zeros(1,length(SNR));
% constel=exp(j*[pi/4 3*pi/4 7*pi/4 5*pi/4]);
for SNR=0:20
SNR
for k=1:(N/2)
temp_num1=rand;
if (temp_num1<0.25)
source1(k)=1+i;
elseif (temp_num1<0.5)
source1(k)=-1+i;
elseif (temp_num1<0.75)
source1(k)=-1-i;
else
source1(k)=1-i;
end
temp_num2=rand;
if (temp_num2<0.25)
source2(k)=1+i;
elseif (temp_num2<0.5)
source2(k)=-1+i;
elseif (temp_num2<0.75)
source2(k)=-1-i;
else
source2(k)=1-i;
end
% source=[source1 source2];
TX=[source1(k) -conj(source2(k)); source2(k) conj(source1(k))];%2*2
%through rayleigh channel and a w noise---
H=randn(1,2)/sqrt(2)+i*randn(1,2)/sqrt(2);%1*2
R=H*TX+ sgma(SNR+1)*randn(1,2)+i*sgma(SNR+1)*randn(1,2);%(1*2)*(2*2)+1*2
%Maximum Ratio combiner forms two signal
x1=conj(H(1))*R(1)+H(2)*conj(R(2));
x2=conj(H(2))*R(1)-H(1)*conj(R(2));
S=[x1 x2];
dh = [1+j -1+j -1-j 1-j];
D1=abs(S(1)*[1 1 1 1]-dh).^2;
[v pos]=min(D1);
Xdec1=dh(pos);
D2=abs(S(2)*[1 1 1 1]-dh).^2;
[v pos]=min(D2);
Xdec2=dh(pos);
Xdec=[Xdec1;Xdec2];
if (Xdec1~=source1(k)|source2(k)~=Xdec2)
error_symbols(SNR+1)=error_symbols(SNR+1)+1;
end
end
end
semilogy(0:SNR,error_symbols/N,'b*-');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -