⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stbc.m

📁 使用qam星座调制方式下的
💻 M
字号:
%16 QAM 星座图
x=[-3 -3 -3 -3   -1 -1 -1 -1  3 3 3  3    1 1 1  1  ];
y=[3  1  -3 -1    3  1 -3 -1  3 1 -3 -1   3 1 -3 -1 ];

Qam=x+y*i;
Es=10; %信号的平均发射功率;

index=1;

%设置横坐标信噪比的步长
step=4;

% 在设置步长的基础上,设置信噪比的初值和最大值
for SNR=4:step:20
    
%误码数量初始化为0
count=0;


%重复的次数
N=10^4;
if SNR==20 N=3*10^4; end; % 当信噪比达到最高时,设置更高的重复次数

    
for it=1:N
    
%产生16bit变量服A从(0,1)之间的均匀分布,并且都是整数(0或者1) 
A=round(rand(1,16));

% 产生TX 符号
s1=Qam(bi2de(A(1:4),'left-msb')+1);%将A中产生的前4位数字转为10进制数并+1,对应于qam星座图中的表项
s2=Qam(bi2de(A(5:8),'left-msb')+1);
s3=Qam(bi2de(A(9:12),'left-msb')+1);
s4=Qam(bi2de(A(13:16),'left-msb')+1);

%OSTBC编码
C1=[s1 s2 s3 s4; -s2 s1 -s4 s3; -s3 s4 s1 -s2; -s4 -s3 s2 s1]; 
C=[C1; conj(C1)];


%设置信道参数
Z=0;
K=1/sqrt(2)*(randn(4,1)+i*randn(4,1)); % 产生四个独立的标准高斯随机过程

%加性高斯白噪声信道 
N0=(4*Es/10^(SNR/10));
Z=sqrt(N0/2)*(randn(8,1)+i*randn(8,1));

%RX 符号

R=C*K+Z; %c为经空时编码后的信号,z为加性噪声


%正交空时分组编码的解码过程

H1=[K(1) K(2) K(3) K(4); K(2) -K(1) -K(4) K(3); K(3) K(4) -K(1) -K(2); K(4) -K(3) K(2) -K(1)];

H=[H1 conj(H1)];


R=[R(1:4); conj(R(5:8))];

%符号级解码
S=R.'*H'/(2*sum(abs(K).^2));

%16-qam调制的符号解码

L=[ abs(Qam-S(1)); abs(Qam-S(2)); abs(Qam-S(3)); abs(Qam-S(4))];

[D,I]=min(L,[],2);


%TX bits
dec_bits(1,1:4)=de2bi(I(1)-1,4,'left-msb');
dec_bits(1,5:8)=de2bi(I(2)-1,4,'left-msb');
dec_bits(1,9:12)=de2bi(I(3)-1,4,'left-msb');
dec_bits(1,13:16)=de2bi(I(4)-1,4,'left-msb');

%计算误码率
count=count+sum(abs(A-dec_bits));

end;

B_err(index)=count/(N*16)
index=index+1;

end;

semilogy(4:step:20, B_err);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -