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