%%%产生随机信源信号
m=randint(1,10000);
x=reshape(m,length(m)/4,4);
%%%分组编码
G=[1 0 1 1 0 0 0;1 1 1 0 1 0 0;1 1 0 0 0 1 0;0 1 1 0 0 0 1];%设置编码矩阵
X=mod(x*G,2);%进行编码,生成编码后的码组
X=X';
n=length(m)/4*7;
X=reshape(X,1,n);
X=bi2de((reshape(X,2,n/2))','left-msb');%二进制数组转十进制
%%%产生QPSK信号
h=modem.pskmod(4);% 产生调制句柄 ,相位偏移默认为0
y=modulate(h,X);%对信号进行调制
P=[];
%%%%加入高斯白噪声
for SNR=0:10
z=awgn(y,SNR);
g=modem.pskdemod(4);
%%%QPSK解调
z=demodulate(g,z);
z=de2bi(z,2,'left-msb');
z=z';
z=reshape(z,1,n);
z=reshape(z,7,n/7);
z=z';
%%%解码
X=decode(z,7,4,'linear',G);
%%%计算误码率
[N,p]=biterr(x,X);
P=[P p];
end
%%%绘制误码率图形
SNR=0:10;
semilogy(SNR,P,'linewidth',2);
title('基于(7,4)线性分组码编码的信号误码率')
xlabel('信噪比SNR');
ylabel('误码率BER');
axis([0 10 10^-3 1]);
grid on;
评论0