如何利用matlab写topsis程序

如何利用matlab写topsis程序,第1张

function [ output_args ] = TOPSIS( A,W,M,N )

%topsis法,指标归一化采用向量归一化法,即正负指标均存在

%A为决策矩阵,W为权值矩阵,M为正指标所在的列,N为负指标所在的列

[ma,na]=size(A)

A=xiangliangguiyi(A) %用向量归一化法得到[标准决策矩阵]

for i=1:na

B(:,i)=A(:,i)*W(i)%按列循环得到[加权标准化矩阵]

end

V1=zeros(1,na) %初始化理想解和负理想解

V2=zeros(1,na)

BMAX=max(B) %取加权标准化矩阵每列的最大值和最小值

BMIN=min(B) %

for i=1:na

if i<=size(M,2)%循环得到理想解和负理想解,注意判断,不然会超个数

V1(M(i))=BMAX(M(i))

V2(M(i))=BMIN(M(i))

end

if i<=size(N,2)

V1(N(i))=BMIN(N(i))

V2(N(i))=BMAX(N(i))

end

end

for i=1:ma %按明源行循环求各方案的贴近度

C1=B(i,:)-V1

S1(i)=norm(C1) %S1,S2分别为离正理想渣尘点和负理想点的距离,激梁态用二阶范数

可求

C2=B(i,:)-V2

S2(i)=norm(C2)

T(i)=S2(i)/(S1(i)+S2(i))%T为贴近度

end

A

B

V1

V2

S1

S2

T

在线分析软件spssau(SPSSAU)可以做熵值法计算,点一下返滚裂即可完成分析,漏闭非常简单。

同时提供智能分析文字,如果有不会的地方可以查看备首帮助手册中的说明。

图像的熵,在型纯许多场合下都有应用,也可以有多种编写程序的方法,下面介绍作者编写的一个图像熵的函数yentropy(),可以直接调用首租晌。可者锋以用于求图像的局部熵,也可以求其整体熵。

function entr=yentropy(a)

a=uint8(a) %这里a为8位的单色图像或24为的RGB彩色图像

[m n l]=size(a)

entr=0

for k=1:l

hi=zeros(1,256)

for i=1:m

for j=1:n

hi(a(i,j,k)+1)=hi(a(i,j,k)+1)+1 %求每种值的在图像中出现的次数

end

end

hi=sort(hi,'descend')

hi=hi./m./n %求概率

en=0.0

for i=1:256

if hi(i)>0

en=en-hi(i).*log2(hi(i)) %概率不为0 累加求熵

else

i=257 %否则停止

end

end

entr=entr+en

end

entr=entr/l %当l=1时a为单色图像;当l=3时a为彩色图像,三个页面的熵平均


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

原文地址: http://outofmemory.cn/yw/12452611.html

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

发表评论

登录后才能评论

评论列表(0条)

保存