求关于熵的MATLAB代码……

求关于熵的MATLAB代码……,第1张

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写求‘熵值法确定权重系数’的程序怎样写法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10113906.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存