欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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('误比特率')

 

 

相关标签: x