基于MATLAB信道编码教学实验软件的设计与实现
基于MATLAB的信道编码教学实验软件设计与实现 卷积码程序:
function output= cnv_ encd( g, k, input)
%g 为卷积码的生成矩阵, n 行, k* L 列。input 为输入的码元序列
if rem( length( input) , k) > 0
input= [ input, zeros( size( 1: k-rem( length( input) , k)
) ) ] ;
end
%确保输入序列input 是k 的倍数。
z= length( input)/k;
if rem( size( g, 2) , k) > 0
error( ‘ Error, g is not of the right size. ’)
end
%确保g 的大小符合要求
li= size( g, 2)/k; n= size( g, 1) ;
u= [ zeros( size( 1: ( li- 1) * k) ) , input, zeros( size( 1:
( li- 1) *k) ) ] ;
%在输入序列的首尾补充合适的零
u1= u( li* k: - 1: 1) ;
for i= 1: z+ li- 2
u1= [ u1, u( ( i+ li) * k: -1: i* k+ 1) ] ;
end
uu= reshape( u1, li* k, z+ li-1) ;
%将新的输入序列u 组合成编码器在不同时钟周期的内容( 即uu 矩阵的
列)
output= reshape( rem( g* uu, 2) , 1, n* ( z+ li- 1) ) ;
%通过模2 和运算求出编码矩阵, 并转化为序列的形式输出( output)
循环码程序:
gen=[1 0 1 1];%校验多项式
poly=[0 0 1 1 1 1 1 1 0 0 1 1 1];%原始信息
plen=length(poly);%返回原始信号的最大长度
glen=length(gen);%返回校验多项式的最大长度
cur=poly(1:glen-1);
for p=glen:plen
cur(glen)=poly(p);
if cur(1)cur=xor(cur(2:glen),gen(2:glen));
else cur=cur(2:glen);end
end
disp('校验码为'),disp(cur)
设计如上界面,程序如下,代码怎么改能实现上面界面的功能?