Matlab计算熵权法
生活随笔
收集整理的這篇文章主要介紹了
Matlab计算熵权法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如需轉載,請注明來源,謝謝合作。
若本文對您有一點點的幫助,歡迎點贊、評論和關注。您的鼓勵和支持是我繼續學習和分享的動力。
**熵權法是一種根據包含各個變量的變異程度進行賦權的方法,是一種客觀賦權法。**而直接給定變量權重或者專家打分給出權重則屬于主觀賦權法。熵權法的思想是:變量數值變化越大,變異程度越大,則其權重應該更大;反之權重則越小。這是較為合理的。
熵權法計算過程不難,運用excel也可計算。但其本身較為繁雜,需要做多個變量甚至多個個體時,matlab就顯示了矩陣運算快速、準確和方便的特點。作者也提供了利用excel和matlab計算的對比案例數據,供大家參考、理解和交流。
鏈接:https://pan.baidu.com/s/1WZTX_zkmsbY274cF_Uz7GA 密碼:ukg7。已共享鏈接和密碼,不用再留郵箱了。
熵權法的計算公式:
熵權法matlab程序:
%{選擇下面一行,F9運行。新建空矩陣R,將51年*6個變量(x1到x6)的數據粘貼入矩陣R R=[] %}clear %1 [rows,cols]=size(R); % 輸入矩陣的大小,rows為對象個數,cols為指標個數 k=1/log(rows); % 求k Rmin = min(R); Rmax = max(R); A = max(R) - min(R); y = R - repmat(Rmin,51,1); %y(i,j) = (R - repmat(Rmin,51,1))/(repmat(A,51,1)); for j = 1 : size(y,2)y(:,j) = y(:,j)/A(j) end %2 求Y(i,j) S = sum(y,1) Y = zeros(rows,cols); for i = 1 : size(Y,2)Y(:,i) = y(:,i)/S(i) end %3 lnYij=zeros(rows,cols); % 初始化lnYij % 計算lnYij for i=1:rowsfor j=1:colsif Y(i,j)==0lnYij(i,j)=0;elselnYij(i,j)=log(Y(i,j));endend end ej=-k*(sum(Y.*lnYij,1)); % 計算熵值Hj %4 weights=(1-ej)/(cols-sum(ej)); %5 F = zeros(rows,cols); for k = 1 : size(R,2)F(:,k) = weights(k)*y(:,k) end format long F = sum(F,2) %F即為對6個變量進行熵權法客觀賦權后,計算獲得的51年來的綜合評分對比提供的excel后發現,matlab極為快速、準確、方便對繁雜的熵權法進行了運算。
總結
以上是生活随笔為你收集整理的Matlab计算熵权法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAPL可以读写的几种文件
- 下一篇: CAPL编程概述