?? stbc4c.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=4; %調制方式QPSK
%%%%%%%%%%%%%%%%%%%%QPSK信號調制%%%%%%%%%%%%%%%%%%%%
npskdata=npsk(n,data);%調用調制方式子函數
x=npskdata; %調制后信號
%%%%%%%%%%%%%%%%%%%Alamouti%%%%%%%%%%%%%%%%%%%%%%%%
for k=1:length(SNR)
error_symbol=0;%對每一個信噪比下的誤符號率清零
for i=1:length(npskdata)/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 x1' -x2' -x3' -x4'
x2 x1 x4 -x3 x2' x1' x4' -x3'
x3 -x4 x1 x2 x3' -x4' x1' x2'
x4 x3 -x2 x1 x4' x3' -x2' x1'];%空時發射信號矩陣
h=rey(nt,nr); %調用信道子函數
noise=sigma(k).*rey(8,nr);
R=sqrt(1/2).*h*X+noise;%接收信號矩陣
% y=zeros(1,nt);
% 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)'+r(1,5)'*H(1,1)+r(1,6)'*H(1,2)+r(1,7)'*H(1,3)+r(1,8)'*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)'+r(1,5)'*H(1,2)-r(1,6)'*H(1,1)-r(1,7)'*H(1,4)+r(1,8)'*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)'+r(1,5)'*H(1,3)+r(1,6)'*H(1,4)-r(1,7)'*H(1,1)-r(1,8)'*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)'-r(1,5)'*H(1,4)-r(1,6)'*H(1,3)+r(1,7)'*H(1,2)-r(1,8)'*H(1,1);
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)
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)'];
r=zeros(1,8)
r=[R(1) R(2) R(3) R(4) R(5)' R(6)' R(7)' R(8)'];
y=zeros(nt,1);
y=H'*r.';
y=y.';
%進行最大似然檢測
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(npskdata);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%畫圖%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
semilogy(SNR,SER,'b*-');
grid on
legend('STBC4C QPSK(4TX 1RX)')
title('QPSK調制下的速率為1/2的4天線復信號STBC在慢瑞利衰減信道上的誤符號率性能')
xlabel('信噪比/dB');
ylabel('誤符號率');
hold on
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -