《信息論與編碼課程大作業(yè)信道容量的迭代算法》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《信息論與編碼課程大作業(yè)信道容量的迭代算法(4頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、信道容量的迭代算法
1信道容量的迭代算法的步驟
一、用了matlab實(shí)現(xiàn)DMC容量迭代的算法如下:
第一步:首先要初始化信源分布:即選取一個(gè)精度,本次中我選deta=0.000001。
第二步:。
第三步:
。
第四步:
第五步:
若,則執(zhí)行k=k+1,然后轉(zhuǎn)第二步。直至轉(zhuǎn)移條件不成立,接著執(zhí)行下面的程序。
第六步:輸出迭代次數(shù)k和和,程序終止。
2. Matlab實(shí)現(xiàn)
clear;
r=input(輸入信源個(gè)數(shù):);
s=input(輸入信宿個(gè)數(shù):);
deta=input(輸入信道容量的精度: );
Q=rand(r,s); %形成r行s
2、列隨機(jī)矩陣Q
A=sum(Q,2); %把Q矩陣每一行相加和作為一個(gè)列矩陣A
B=repmat(A,1,s); %把矩陣A的那一列復(fù)制為S列的新矩陣
%判斷信道轉(zhuǎn)移概率矩陣輸入是否正確
P=input(輸入信道轉(zhuǎn)移矩陣P:)%從這句話(huà)開(kāi)始將用下面兩句代替可自動(dòng)生成信道轉(zhuǎn)移矩陣
[r,s]=size(P);
for i=1:r
if(sum(P(i,:))~=1) %檢測(cè)概率轉(zhuǎn)移矩陣是否行和為1.
error(概率轉(zhuǎn)移矩陣輸入有誤??!)
return;
end
for j=1:s
if(P(i,j
3、)<0||P(i,j)>1) %檢測(cè)概率轉(zhuǎn)移矩陣是否負(fù)值或大于1
error(概率轉(zhuǎn)移矩陣輸入有誤??!)
return;
end
end
end
%將上面的用下面兩句代替可自動(dòng)生成信道轉(zhuǎn)移矩陣
%disp(信道轉(zhuǎn)移概率矩陣:)
%P=Q./B 信道轉(zhuǎn)移概率矩陣(每一個(gè)原矩陣的新數(shù)除以所在行的數(shù)總和)
i=1:1:r; %設(shè)置循環(huán)首項(xiàng)為1,公差為1,末項(xiàng)為r(Q的行數(shù))的循環(huán)
p(i)=1/r; %原始信源分布r個(gè)信源,等概率分布
disp(原始信源分布:)
p(i)
E=repmat(p,1,s
4、);%把r個(gè)等概率元素組成一列,復(fù)制為s列
for k=1:1:1/deta
m=E.*P; % m=p.*E; %后驗(yàn)概率的分子部分
a=sum(m); %把得到的矩陣m每列相加之和構(gòu)成一行
su1=repmat(a,r,1);%把得到的行矩陣a復(fù)制r行,成一新矩陣sul,后驗(yàn)概率的分母部分
t=m./su1; %后驗(yàn)概率矩陣
n=exp(sum(P.*log(t),2)); %信源分布的分子部分
su2=sum(n); %信源分布的分母部分
p=n/su2;
5、 %信源分布
E=repmat(p,1,s);
C(k+1)=log(sum(exp(sum(P.*log(t),2))))/log(2);
kk=abs(C(k+1)-C(k))/C(k+1);
if(kk<=deta)
break;
end
disp(迭代次數(shù):k=),disp(k)
end
disp(最大信道容量時(shí)的信源分布:p=),disp(p)
disp(最大信道容量:C=),disp(C(k+1))
3. 運(yùn)行結(jié)果及分析(宋體四號(hào),加粗)
結(jié)果分析:這兩組數(shù)據(jù)都是我隨機(jī)選的,都是
6、選的信源個(gè)數(shù)為2,信宿的個(gè)數(shù)為3,選用的精度為0.000001。然后輸入信道轉(zhuǎn)移矩陣P,執(zhí)行,將得到的結(jié)果代入,得到后,再進(jìn)行的判斷,這個(gè)條件滿(mǎn)足時(shí)繼續(xù)求,再依次往下計(jì)算,直至這個(gè)條件不滿(mǎn)足,然后輸出k和和??偟膩?lái)說(shuō)這不過(guò)是將矩陣不斷的代入公式,當(dāng)最后的精度不大于0.000001.輸出k和和。
第二組數(shù)據(jù):
4.心得體會(huì)
在此次matlab編程實(shí)現(xiàn)信道容量的迭代算法的過(guò)程中,開(kāi)始我覺(jué)得這十分的困難,經(jīng)過(guò)網(wǎng)上查閱資料和請(qǐng)教同學(xué),最后才對(duì)本次設(shè)計(jì)有了一定的理解,詳細(xì)理解了信道容量的迭代算法過(guò)程。經(jīng)過(guò)理解,發(fā)現(xiàn)這種編碼其實(shí)挺簡(jiǎn)單的,最重要的是怎樣用程序把它實(shí)現(xiàn),這對(duì)我們的編程能力也是一次考驗(yàn)。編程時(shí)邏輯要十分的嚴(yán)謹(jǐn),嚴(yán)格的遵守編程的規(guī)則,一點(diǎn)的錯(cuò)誤都會(huì)造成整個(gè)程序的無(wú)法運(yùn)行。調(diào)試過(guò)程會(huì)發(fā)現(xiàn)很多問(wèn)題,這時(shí)不能煩躁,要耐心的去發(fā)現(xiàn)問(wèn)題,不斷掌握matlab軟件的各種調(diào)試方法。通過(guò)這次設(shè)計(jì)我深刻體會(huì)到細(xì)節(jié)決定成敗,同時(shí)也發(fā)覺(jué)自己知識(shí)學(xué)的太淺薄,沒(méi)有從本質(zhì)上把握住要點(diǎn),運(yùn)用知識(shí)不靈活。讓我認(rèn)識(shí)到在今后學(xué)習(xí)當(dāng)中,要注意去深度思考,把所學(xué)知識(shí)有機(jī)聯(lián)系起來(lái),掌握本質(zhì),理解要領(lǐng)。此次實(shí)驗(yàn)進(jìn)一步加強(qiáng)了我的編程能力和嚴(yán)謹(jǐn)?shù)倪壿嬎季S能力,受益頗多。很感謝老師給了我這么一次鍛煉的機(jī)會(huì),讓我對(duì)自己有了新的認(rèn)識(shí),感謝同學(xué)在這次作業(yè)的完成對(duì)我的幫助,讓我有了新的提高。