matlab中如何计算两组数据的互信息,或者如何计算联合熵,为什么我算出来都是负值 求解!!急 5
下面是部分代码计算m与m2的互信息mim=[78.313.24.324.327224.533.96791432026.746.9230159.8128215.613913...
下面是部分代码 计算m与m2的互信息mi
m=[78.3 13.2 4.32 4.32 72 24.5 33.9 679 143 20 26.7 46.9 230 159.8 128 215.6 139 139 70.2 129.6 ]
mm=hist(m)/10;
mm
mm(mm==0) = [ ];
mm
Hm = -sum(mm.*log2(mm));
Hm
m2=[78.61 96.98 81.86 82.91 81.35 83.95 78.76 85.72 83.98 84.47 84.73 76.14 124.69 124.69 124.69 623.47 124.69 124.69 18.75 630.02 ]
format shortG %这个1.0e+03 *是“1000乘”的意思你可以调整显示格式:format shortg或者format longg更多显示格式参见format函数的说明
m2
if max(max(m2))~=min(min(m2))
m2 = (m2-min(min(m2)))/(max(max(m2))-min(min(m2)));
end
m2
mm2=hist(m2)/10;
mm2
mm2(mm2==0) = [ ];
mm2
Hm2 = -sum(mm2.*log2(mm2));
Hm2
% 联合熵
for i=1:length(mm)
for j=1:length(mm2)
L(i,j)=mm(i)*mm2(j);
end
end
Hab=-sum(sum(L.*log2(L)));
disp('Hab信源联合熵为:');
Hab
%计算a和b的互信息
mi =( Hm+Hm2)-Hab;
mi 展开
m=[78.3 13.2 4.32 4.32 72 24.5 33.9 679 143 20 26.7 46.9 230 159.8 128 215.6 139 139 70.2 129.6 ]
mm=hist(m)/10;
mm
mm(mm==0) = [ ];
mm
Hm = -sum(mm.*log2(mm));
Hm
m2=[78.61 96.98 81.86 82.91 81.35 83.95 78.76 85.72 83.98 84.47 84.73 76.14 124.69 124.69 124.69 623.47 124.69 124.69 18.75 630.02 ]
format shortG %这个1.0e+03 *是“1000乘”的意思你可以调整显示格式:format shortg或者format longg更多显示格式参见format函数的说明
m2
if max(max(m2))~=min(min(m2))
m2 = (m2-min(min(m2)))/(max(max(m2))-min(min(m2)));
end
m2
mm2=hist(m2)/10;
mm2
mm2(mm2==0) = [ ];
mm2
Hm2 = -sum(mm2.*log2(mm2));
Hm2
% 联合熵
for i=1:length(mm)
for j=1:length(mm2)
L(i,j)=mm(i)*mm2(j);
end
end
Hab=-sum(sum(L.*log2(L)));
disp('Hab信源联合熵为:');
Hab
%计算a和b的互信息
mi =( Hm+Hm2)-Hab;
mi 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
展开全部
L(i,j)=mm(i)*mm2(j); 这一条意味着两个变量相互独立,最终答案肯定为0,
m=[78.3 13.2 4.32 4.32 72 24.5 33.9 679 143 20 26.7 46.9 230 159.8 128 215.6 139 139 70.2 129.6 ];
m = mapminmax(m,0,1);
m2=[78.61 96.98 81.86 82.91 81.35 83.95 78.76 85.72 83.98 84.47 84.73 76.14 124.69 124.69 124.69 623.47 124.69 124.69 18.75 630.02 ];
m2 = mapminmax(m2,0,1);
Y=hist3([m',m2'])/100;
mm=sum(Y,1);
mm2=sum(Y,2);
mm2=mm2';
%
% mm=hist(m)/10;
% mm
mm(mm==0) = [ ];
% mm
Hm = -sum(mm.*log2(mm));
Hm
mm2(mm2==0) = [ ];
mm2
Hm2 = -sum(mm2.*log2(mm2));
Hm2
Y=reshape(Y,1,100);
Y(Y==0)=[];
Hab=-sum(sum(Y.*log2(Y)));
disp('Hab信源联合熵为:');
Hab
%计算a和b的互信息
mi =( Hm+Hm2)-Hab;
mi
m=[78.3 13.2 4.32 4.32 72 24.5 33.9 679 143 20 26.7 46.9 230 159.8 128 215.6 139 139 70.2 129.6 ];
m = mapminmax(m,0,1);
m2=[78.61 96.98 81.86 82.91 81.35 83.95 78.76 85.72 83.98 84.47 84.73 76.14 124.69 124.69 124.69 623.47 124.69 124.69 18.75 630.02 ];
m2 = mapminmax(m2,0,1);
Y=hist3([m',m2'])/100;
mm=sum(Y,1);
mm2=sum(Y,2);
mm2=mm2';
%
% mm=hist(m)/10;
% mm
mm(mm==0) = [ ];
% mm
Hm = -sum(mm.*log2(mm));
Hm
mm2(mm2==0) = [ ];
mm2
Hm2 = -sum(mm2.*log2(mm2));
Hm2
Y=reshape(Y,1,100);
Y(Y==0)=[];
Hab=-sum(sum(Y.*log2(Y)));
disp('Hab信源联合熵为:');
Hab
%计算a和b的互信息
mi =( Hm+Hm2)-Hab;
mi
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
2015-07-28
展开全部
main()
{
float n,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
{
float n,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
追问
这是什么呢
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主为什么只对m2归一化,没有对m归一化呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |