急求信道容量matlab编程代码!!已知一个信道的信道转移矩阵为 p用Matlab编写函数求信道容量.

已知一个信道的信道转移矩阵为p,p为一个两行三列矩阵... 已知一个信道的信道转移矩阵为 p,p为一个两行三列矩阵 展开
 我来答
SharkF4
推荐于2018-03-07
知道答主
回答量:16
采纳率:0%
帮助的人:15.4万
展开全部
%亲自验证,绝对可用!
% Matlab实现离散信道容量的迭代算法% 功能:利用迭代算法计算离散信道的容量
%参数解释
%C:信道容量
%P:转移概率矩阵
%B:中间变量矩阵
%e: 信道容限,一般选0.00001
%X:输入概率分布
%n:迭代次数

function channel_cap(P, e)
n=0;
C=0;
C_0=0;
C_1=0;
[r,s]=size(P);
for i=1:r
if(sum(P(i,:))~=1)%检测概率转移矩阵是否行和为1.
error('概率转移矩阵输入有误!!')
return;
end
for j=1:s
if(P(i,j)<0||P(i,j)>1)%检测概率转移矩阵是否负值或大于1
error('概率转移矩阵输入有误!!')
return;
end
end
end
X=ones(1,r)/r;
A=zeros(1,r);
B=zeros(r,s);
while(1)
n=n+1;
for i=1:r
for j=1:s
B(i,j)=log(P(i,j)/(X*P(:,j))+eps);
end
A(1,i)=exp(P(i,:)*B(i,:)');
end
C_0=log2(X*A');
C_1=log2(max(A));
if (abs(C_0-C_1)<e) %满足迭代终止条件停止迭代
C=C_0;
fprintf('迭代次数: n=%d\n',n)
fprintf('信道容量: C=%f比特/符号\n',C)
break; %满足后输出结果并退出
else
X=(X.*A)/(X*A');
continue;
end
end
全测科技
2024-12-19 广告
确实可以进行维修。如果您的频谱分析仪出现问题,并且还在保修期内,建议您联系原厂进行维修,这样可以享受到免费的维修服务。如果已经超过了保修期,也不用担心,市场上有许多专业的维修服务可以提供帮助。您可以在网络上搜索深圳全测科技有限公司,这是一家... 点击进入详情页
本回答由全测科技提供
474464221
2012-11-07
知道答主
回答量:44
采纳率:0%
帮助的人:14.3万
展开全部
这个东西自己写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式