資源簡介
用MATLAB編寫信道容量程序%信道容量C計算的Matlab程序
clc;clear all;
N = input('輸入信源符號X的個數N=');
M = input('輸出信源符號Y的個數M=');
p_yx=zeros(N,M); %程序設計需要信道矩陣初始化為零
fprintf('輸入信道矩陣概率\n')
for i=1:N
for j=1:M
p_yx(i,j)=input('p_yx=');%輸入信道矩陣概率
if p_yx(i)<0
error('不符合概率分布')
end
end
end
代碼片段和文件信息
%信道容量C計算的Matlab程序
clc;clear?all;
N?=?input(‘輸入信源符號X的個數N=‘);?
M?=?input(‘輸出信源符號Y的個數M=‘);?
p_yx=zeros(NM);???%程序設計需要信道矩陣初始化為零
fprintf(‘輸入信道矩陣概率\n‘)
for?i=1:N
?????for?j=1:M
?????p_yx(ij)=input(‘p_yx=‘);%輸入信道矩陣概率
?????if?p_yx(i)<0
?????error(‘不符合概率分布‘)
?????end
?????end
end
for?i=1:N???%各行概率累加求和
?????s(i)=0;
?????for?j=1:M
?????????s(i)=s(i)+p_yx(ij);
?????end
end
for?i=1:N?????%判斷是否符合概率分布
if?(s(i)<=0.999999||s(i)>=1.000001)
???error(‘不符合概率分布‘)
end
end
b=input(‘輸入迭代精度:‘);%輸入迭代精度
for?i=1:N
?????p(i)=1.0/N;???%取初始概率為均勻分布
end
for?j=1:M???%計算q(j)
?????q(j)=0;
???for?i=1:N
???????q(j)=q(j)+p(i)*p_yx(ij);
???end
end????????
for?i=1:N?????%計算a(i)
?????d(i)=0;
?????for?j=1:M
?????????if(p_yx(ij)==0)
???????????d(i)=d(i)+0;
?????????else
?????????d(i)=d(i)+p_yx(ij)*log(p_yx(ij)/q(j));
???????end
- 上一篇:matlab2009a破解版鏈接
- 下一篇:各種體制雷達信號MATLAB仿真
評論
共有 條評論