• 大小: 16KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: Matlab
  • 标签: idma  

资源简介

用matlab 编写的idma的程序,包括ese模块和dec模块

资源截图

代码片段和文件信息

function output=cnv_encd(Gk0input)
% cnv_encd(Gk0input)k0是每一时钟周期输入编码器的bit数,
% G是决定输入序列的生成矩阵,它有n0行L*k0列n0是输出bit数,
% 参数n0和L由生成矩阵G导出,L是约束长度。L之所以叫约束长度
% 是因为编码器在每一时刻里输出序列不但与当前输入序列有关,
% 而且还与编码器的状态有关,这个状态是由编码器的前(L-1)k0。
% 个输入决定的通常卷积码表示为(n0k0m),m=(L-1)*k0是编码
% 器中的编码存贮个数,也就是分为L-1段,每段k0个
% 有些人将m=L*k0定义为约束长度,有的人定义为m=(L-1)*k0

% 查看是否需要补0,输入input必须是k0的整数部 

k0=1;
G=[1 1 1;1 0 1];
if rem(length(input)k0)>0
    input=[inputzeros(size(1:k0-rem(length(input)k0)))];
end
n=length(input)/k0;

% 检查生成矩阵G的维数是否和k0一致 
if rem(size(G2)k0)>0
    error(‘ErrorG is not of the right size.‘)
end

% 得到约束长度L和输出比特数n0
 
L=size(G2)/k0;
n0=size(G1);
% 在信息前后加0,使存贮器归0,加0个数为(L-1)*k0个
u=[zeros(size(1:(L-1)*k0))inputzeros(size(1:(L-1)*k0))];

% 得到uu矩阵它的各列是编码器各个存贮器在各时钟周期的内容 
u1=u(L*k0:-1:1);
%将加0后的输入序列按每组L*k0个分组,分组是按一比特增加
%从1到L*k0比特为第一组,从2到L*k0+1为第二组,。。。。,
%并将分组按倒序排列。 
for i=1:n+L-2
    u1=[u1u((i+L)*k0:-1:i*k0+1)];
end
uu=reshape(u1L*k0n+L-1);
% 得到输出,输出由生成矩阵G*uu得到
output=reshape(rem(G*uu2)1n0*(L+n-1));

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2010-04-06 17:48  idma程序\
     文件        1341  2010-03-26 15:55  idma程序\cnv_encd.asv
     文件        1368  2010-03-26 15:33  idma程序\cnv_encd.m
     文件        1666  2010-03-25 18:41  idma程序\convolutionencode.asv
     文件        1681  2010-03-30 09:27  idma程序\convolutionencode.m
     文件        6856  2010-03-30 16:39  idma程序\idmaTraditional.asv
     文件        6856  2010-03-30 16:41  idma程序\idmaTraditional.m
     文件       14628  2010-03-30 15:48  idma程序\sovadec.m
     文件        3720  2010-03-30 16:09  idma程序\viterbi.m
     文件        5615  2010-04-06 17:48  idma程序\viterbidec.asv
     文件        5637  2010-04-06 17:49  idma程序\viterbidec.m

评论

共有 条评论

相关资源