这里的代码时在学习清风老师的课后自己写的,可能没有清风老师写的那么高级,但是对于小白来说应该是挺友好的啦!啦啦啦!
1.正向化:
X=[1 2 3;1 2 3;2 3 4]; [r,l]=size(X); lie=input('想对哪一列进行处理:例如:对1 2 3 列处理,则输入[1 2 3]'); Type=input('写出类型 (1)极小型(2)中间型(3)区间型 例如[1 2 3]'); for i=1:l if Type(i)==1 X(:,i)=repmat(max(X(:,i)),r,1)-X(:,i) end if Type(i)==2 best=input('请输入最佳值') M=max(abs(X(:,i)-repmat(best,r,1))) X(:,i)=ones(r,1)-(X(:,i)-repmat(best,r,1))./M end if Type(i)==3 a=input('输入最佳区间的上界:') b=input('输入最佳区间的下界:') M=max(a-min(X(:,i)),max(X(:,i))-b) for j=1:r if X(j,i)<a X(j,i)=1-(a-X(j,i))/M elseif X(j,i)>b X(j,i)=1-(X(j,i)-b)/M else X(i,j)=1 end end end end disp (X)
2.标准化
disp ('正向化后的矩阵为:X=') disp(X) Z = X ./ repmat(sum(X.*X) .^ 0.5, r, 1); disp('标准化矩阵 Z = ') disp(Z)
3.计算得分并归一化
Zmax=sum((Z-repmat(max(Z),r,1)).^2 ,2).^1/2 Zmin=sum((Z-repmat(min(Z),r,1)).^2 ,2).^1/2 S = Zmin ./ (Zmin+Zmax); % 未归一化的得分 disp('最后的得分为:') stand_S = S / sum(S); [sorted_S,index] = sort(stand_S ,'descend'); disp(stand_S)
数学建模.Topsis优劣解距离法代码部分
于 2023-12-07 15:02:11 首次发布