RS信道编码(matlab)
程序员文章站
2024-03-23 18:12:28
...
%BPSK调制在AWGN信道下,RS码
clear all
SNR=-10:10;
N=30000; %消息比特个数
ber1=zeros(1,length(SNR));
n=7;
k=5;
T=1; %符号周期
fs=2; %每个符号的采样点数
% fc=2; %载波频率
ts=1/fs; %采样时间间隔
t=0:ts:T-ts; %时间向量
msg=randi([0,1],1,N);
msg8=bi2ba(msg);%二进制转成八进制
msg81=reshape(msg8,5,length(msg8)/5).'; %待转换的矩阵就生成了
msgGF=gf(msg81,3);
msgrs=rsenc(msgGF,n,k); %(5,7)RS编码成功 7个输入 5个输出
%msgrs的格式为length(msg8)/k行,n列
msgrs1=reshape(msgrs.',1,length(msg8)/k*n);
msgrs2=de2bi(double(msgrs1.x),'left-msb');%十进制转二进制
%msgrs2的格式为length(msg8)/k*n行,3列
msgy=reshape(msgrs2',1,length(msg8)/k*n*3);%待调制信号
x1=pskmod(msgy,2);
for ii=1:length(SNR)
y=awgn(x1,SNR(ii)); %高斯信道
y1=pskdemod(y,2);
[hnum,lnum]=size(y1);
yrsgs8=reshape(y1,3,hnum*lnum/3).';
yrsgs81=bi2de(yrsgs8,'left-msb');
yrsgs81=reshape(yrsgs81,n,length(yrsgs81)/n).';
ygsrsdec=rsdec(gf(yrsgs81,3),n,k);
d1=reshape(ygsrsdec.x',1,N/3);
d2=de2bi(d1,'left-msb').';
ygs=reshape(d2,1,N);
[num,ber1(ii)] = biterr(ygs, msg);
disp(ber1);
end
figure(1)
semilogy(SNR,ber1,'-ro') ;
legend('高斯');
title('RS码 2PSK AWGN')
xlabel('信噪比(dB)')
ylabel('误比特率')
下一篇: 四点共面