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程序,要详细哦!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)