如何利用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

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

以上就是关于如何利用matlab写topsis程序全部的内容,包括:如何利用matlab写topsis程序、矩阵的标准化与归一化分别是怎样的并分别写出其matlab程序,要详细哦!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存