資源簡介
用matlab 編寫的idma的程序,包括ese模塊和dec模塊

代碼片段和文件信息
function?output=cnv_encd(Gk0input)
%?cnv_encd(Gk0input)k0是每一時(shí)鐘周期輸入編碼器的bit數(shù),
%?G是決定輸入序列的生成矩陣,它有n0行L*k0列n0是輸出bit數(shù),
%?參數(shù)n0和L由生成矩陣G導(dǎo)出,L是約束長度。L之所以叫約束長度
%?是因?yàn)榫幋a器在每一時(shí)刻里輸出序列不但與當(dāng)前輸入序列有關(guān),
%?而且還與編碼器的狀態(tài)有關(guān),這個(gè)狀態(tài)是由編碼器的前(L-1)k0。
%?個(gè)輸入決定的通常卷積碼表示為(n0k0m),m=(L-1)*k0是編碼
%?器中的編碼存貯個(gè)數(shù),也就是分為L-1段,每段k0個(gè)
%?有些人將m=L*k0定義為約束長度,有的人定義為m=(L-1)*k0
%?查看是否需要補(bǔ)0,輸入input必須是k0的整數(shù)部?
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的維數(shù)是否和k0一致?
if?rem(size(G2)k0)>0
????error(‘ErrorG?is?not?of?the?right?size.‘)
end
%?得到約束長度L和輸出比特?cái)?shù)n0
?
L=size(G2)/k0;
n0=size(G1);
%?在信息前后加0,使存貯器歸0,加0個(gè)數(shù)為(L-1)*k0個(gè)
u=[zeros(size(1:(L-1)*k0))inputzeros(size(1:(L-1)*k0))];
%?得到uu矩陣它的各列是編碼器各個(gè)存貯器在各時(shí)鐘周期的內(nèi)容?
u1=u(L*k0:-1:1);
%將加0后的輸入序列按每組L*k0個(gè)分組,分組是按一比特增加
%從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));
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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
評論
共有 條評論