p = imhist(Y(:));
p(p==0) = [ ];
p = p / numel(Y);
H1 = -sum(plog2(p));
在这里Y是指的输出图像。H指的是信息熵
最大化就实现figure与屏幕大小一致,所以可以先获取屏幕大小,之后将figure的位置属性设置为获取到的屏幕大小。
具体实现方法可以参考如下程序段:
% figure 窗口最大化,坐标轴也随着窗口变大而相应变大
scrsz = get(0,'ScreenSize'); % 是为了获得屏幕大小,Screensize是一个4元素向量[left,bottom, width, height]
set(gcf,'Position',scrsz); % 用获得的screensize向量设置figure的position属性,实现最大化的目的
x=[1 2 3 56 7
2 3 5 45 8
];
[n,m]=size(x);
k=1/log(n);
X=zeros(n,m);
for j=1:m
for i=1:n
c=sort(x(:,j));
big=x(n,j);
small=x(1,j);
X(i,j)=(x(i,j)-small)/(big-small)+1;
end
end
p=[];
for j=1:m
th=0;
for t=(X(:,1))'
th=th+t;
end
Ph=X(:,j)/th;
p=[p Ph];
end
e=[];
for j=1:m
eg=0;
for i=1:n
eh=-kp(i,j)log(p(i,j));
eg=eg+eh;
end
e=[e,eg];
end
E=0;
for j=1:m
E=E+e(j);
end
g=[];
for j=1:m
gh=(1-e(j))/(m-E);
g=[g,gh];
end
Eh=0;
for nh=g
Eh=Eh+nh;
end
w=[];
for j=1:m
wh=g(j)/Eh;
w=[w,wh];
end
s=[];
for i=1:n
sh=w(i)p(i,:);
shen=0;
for she=sh
shen=shen+she;
end
s=[s ,shen];
end
你运行了这个程序,发现报错了。
在Matlab里面,这个shang只是一个函数。这不是这样运行的。
在其他M文件里面是可以调用这个函数的,
比如写个:
先定义个x 。然后运行;x是输入
shang(x)
之后,你就得到了结果。输出的w
这就是matlab里面函数的概念。
你可以试试这个程序,这样:
先定义
a=magic(4);
然后把第二行到结尾都复制进去,再试。就应该有结果了。
以上就是关于求关于熵的MATLAB代码……全部的内容,包括:求关于熵的MATLAB代码……、如何用matlab实现最大熵谱法、用Matlab写求‘熵值法确定权重系数’的程序怎样写法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)