灰色關(guān)聯(lián)度matlab源程序_第1頁
灰色關(guān)聯(lián)度matlab源程序_第2頁
灰色關(guān)聯(lián)度matlab源程序_第3頁
灰色關(guān)聯(lián)度matlab源程序_第4頁
灰色關(guān)聯(lián)度matlab源程序_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、灰色關(guān)聯(lián)度matlab源程序 最近幾天一直在寫算法,其實網(wǎng)上可以下到這些算法的源程序的,但是為了搞懂,搞清楚,還是自己一個一個的看了,寫了,作為自身的積累,而且自己的的矩陣計算類庫也迅速得到補(bǔ)充,以后關(guān)于算法方面,基本的矩陣運算不用再重復(fù)寫了,挺好的,是種積累,下面把灰關(guān)聯(lián)的matlab程序與大家分享?;疑P(guān)聯(lián)度分析法是將研究對象及影響因素的因子值視為一條線上的點,與待識別對象及影響因素的因子值所繪制的曲線進(jìn)行比較,比較它們之間的貼近度,并分別量化,計算出研究對象與待識別對象各影響因素之間的貼近程度的關(guān)聯(lián)度,通過比較各關(guān)聯(lián)度的大小來判斷待識別對象對研究對象的影響程度。關(guān)聯(lián)度計算的預(yù)處理,一般初

2、值化或者均值化,根據(jù)我的實際需要,本程序中使用的是比較序列與參考序列組成的矩陣除以參考序列的列均值等到的,當(dāng)然也可以是其他方法。%注意:由于需要,均值化方法采用各組值除以樣本的各列平均值clear;clc;yangben=47.924375 25.168125 827.4105438 330.08875 1045.164375 261.37437516.3372 6.62 940.2824 709.2752 962.1284 84.87455.69666667 30.80333333 885.21 275.8066667 1052.42 435.81; %樣本數(shù)據(jù)fangzhen=36.27

3、14.59 836.15 420.41 1011.83 189.54 64.73 35.63 755.45 331.32 978.5 257.87 42.44 23.07 846 348.05 1025.4 296.69 59.34 39.7 794.31 334.63 1016.4 317.27 52.91 17.14 821.79 306.92 1141.94 122.04 4.21 4.86 1815.52 2584.68 963.61 0.00 6.01 2.43 1791.61 2338.17 1278.08 30.87 3.01 1.58 1220.54 956.14 1244.7

4、5 3.91 25.65 7.42 790.17 328.88 1026.01 92.82 115.80 27 926.5 350.93 1079.49 544.38 12.63 8.75 1055.50 1379.00 875.10 1.65 ; %待判數(shù)據(jù)rows,cols=size(fangzhen);p=0.5;    %分辨系數(shù)m,n=size(yangben);      R=;for irow=1:rows     yy=fangzhen(irow,:

5、);     data=yy;yangben;     data_gyh1=mean(yangben)     for i=1:m+1         for j=1:n             data_gyh(i,j)=data(i,j)/data_gyh1(j); 

6、;        end     end          for i=2:m+1         for j=1:n             Dij(i-1,j)=abs(data_gyh(1,j)-data

7、_gyh(i,j);         end     end     Dijmax=max(max(Dij);     Dijmin=min(min(Dij);          for i=1:m         for j=1:n

8、60;            Lij(i,j)=(Dijmin+p*Dijmax)/(Dij(i,j)+p*Dijmax);         end     end          LijRowSum=sum(Lij');     

9、0;    for i=1:m         Rij(i)=LijRowSum(i)/n;     end     R=R;Rij;endRmatlab求灰色關(guān)聯(lián)度矩陣源代碼 2010-12-11 22:57function greyrelationaldegree(X,c)%GRAYRELATIONALDEGREE this function is used for calculating the ge

10、ry%relation between squence%rememeber that the first column of the input matrix is the desicion%attribution squences.what we want to calculate is the grey ralational degree between%it and other attributions%X is the squence matrix, c is the parameter used in the function%in most of the time, the val

11、ue of c is 0.5firstrow = X(1,:);reci_firstrow = 1./firstrow;reci_convert = diag(reci_firstrow);initialMIRROR = X*reci_convert;% find the initial value mirror of the sequce matrixA = initialMIRROR'nrow,ncolumn = size(A);for (i=2:nrow)    C = A(i,:)-A(1,:)    D=abs(C)

12、;    eval('B' num2str(i) '=D');    amax = max(eval('B' num2str(i)    amin = min(eval('B' num2str(i)    maxarray(i-1)=amax    minarray(i-1)=aminend %find the difference squence and the max value

13、 and min value of each squencemaxmax = max(maxarray)minmin = min(minarray)for(i=2:nrow)    for(j=1:ncolumn)        eval('greyrelationdegree' num2str(i) '(j)=(minmin+c*maxmax)/(B' num2str(i) '(j)+c*maxmax)')    e

14、ndend % calculate the greyralational degree of each datafor(i=2:nrow)   eval('greyrelatioanaldegree_value' num2str(i) '= mean (greyrelationdegree' num2str(i) ')'  )   end基于matlab灰色關(guān)聯(lián)度計算的實現(xiàn) 2006年07月28日 星期五 上午 11:06function r=incident_degree(x0,x1)

15、 %compute the incident degree for grey model. %Designed by NIXIUHUI,Dalian Fisher University. %17 August,2004,Last modified by NXH at 21 August,2004        %數(shù)據(jù)初值化處理 x0_initial=x0./x0(1); temp=size(x1); b=repmat(x1(:,1),1 temp(2); x1_initial=x1./b; %分辨系數(shù)選擇 K=0.1; disp(&#

16、39;The grey interconnect degree is: '); x0_ext=repmat(x0_initial,temp(1) 1); contrast_mat=abs(x0_ext-x1_initial); delta_min=min(min(contrast_mat);%delta_min在數(shù)據(jù)初值化后實際為零 delta_max=max(max(contrast_mat); a=delta_min+K*delta_max; incidence_coefficient=a./(contrast_mat+K*delta_max);%得到關(guān)聯(lián)系數(shù) r=(sum(inc

17、idence_coefficient')'/temp(2);      %得到鄧氏面積關(guān)聯(lián)度我們根據(jù)圖1的步驟和圖2的數(shù)據(jù)進(jìn)行編程實現(xiàn),程序如下:%清除內(nèi)存空間等clear;close all;clc;%載入源數(shù)據(jù)    %其實這里可以載入execl表格的n=15;                    

18、;   %參與評價的人數(shù)m=4;                        %參與評價的指標(biāo)個數(shù)X_0=zeros(n,m);             %      

19、    數(shù)據(jù)矩陣X_2=zeros(n,m);             %偏差結(jié)果的求取矩陣X_3=zeros(n,m);             %  相關(guān)系數(shù)計算矩陣a1_0=13 18 17 18 17 17 18 17 13 17 18 13 18 13 18;a2_0=18 18 17 17 18 13 17

20、 13 18 13 17 13 13 17 17;a3_0=48.67 43.33 43.56 41.89 39.47 43.44 37.97 41.14 39.67 39.83 34.11 40.58 34.19 30.75 21.22;a4_0=10 10.7 3 5.4 5.4 0.7 4.2 0.5 9.3 0.85 2.9 5.45 4.2 2.7 6;    %指標(biāo)數(shù)X_1=a1_0',a2_0',a3_0',a4_0'   %最后使用到的數(shù)據(jù)矩陣%1 尋找參考列x0=max(a1_0),max(a2

21、_0),max(a3_0),max(a4_0);   %取每列的最大值(指標(biāo)的最大值)%2 計算偏差結(jié)果i=1;while(i=m+1)                                   %為什么這個地方會出問題呢

22、0;   for j=1:1:n        X_2(j,i)=abs(X_1(j,i)-x0(i);    end;    i=i+1;end%3 確定偏差的最值error_min=min(min(X_2);error_max=max(max(X_2);%4 計算相關(guān)系數(shù)i=1;p=0.5;while(i=m+1)    for j=1:1:n      

23、;  X_3(j,i)=(error_min+p*error_max)/(X_2(j,i)+p*error_max);    end;    i=i+1;end%X_3     %可以在此觀察關(guān)聯(lián)矩陣%5 計算各個學(xué)生的關(guān)連序a=zeros(1,n);for j=1:1:n    for i=1:1:m     a(j)=a(j)+X_3(j,i);   %其實可以直接用sum 

24、0;  end;    a(j)=a(j)/m;           %可以改進(jìn)% 1 2 3 下一頁%end%a      %在此可以觀測各個學(xué)生的序 %改進(jìn):如果各個指標(biāo)的所占權(quán)重不一樣的話,可以添加相應(yīng)的權(quán)系數(shù)%6 排序b=a'c,s=sort(b);for i=1:1:n    d(i)=i;endd=d'result=d b c s%7 將結(jié)果顯示出來

25、figure(1);plot(a);figure(2)bar(a);                  %柱狀圖    最后所得到的結(jié)果如圖3到圖5所示。 圖3 程序運行結(jié)果圖4 曲線圖圖5 柱狀圖    根據(jù)以上三圖我們就可以判斷出每個學(xué)生序列與參考序列(最大值)之間的關(guān)系,與最大值的關(guān)系越密切,那么其關(guān)聯(lián)度越大。根據(jù)以上的啟示,我用matlab灰度關(guān)聯(lián)分

26、析的想法是:1、參考序列我可以選擇已知屬于某一類神經(jīng)元的統(tǒng)計數(shù)據(jù),我選擇平均值。2、加入一個未知類的數(shù)據(jù),與已有類中的數(shù)據(jù)一起計算他們與平均值的關(guān)聯(lián)度。3、計算出來的關(guān)聯(lián)度我們可以有多種處理思路,如果未知類的關(guān)聯(lián)度不是排在最末,可以認(rèn)為它屬于這一類,或者未知類的關(guān)聯(lián)度大于計算出來的關(guān)聯(lián)度平均值,我們可以認(rèn)為它屬于這一類。    使用關(guān)聯(lián)度進(jìn)行分類,計算出來的關(guān)聯(lián)度如何使用還是個問題,這個東西是我琢磨出來的,我還沒有見到過相關(guān)的文獻(xiàn),估計應(yīng)該可以用,期望以后的專家學(xué)者鉆研了。參考文獻(xiàn):1 郝海燕,王斌.大學(xué)生綜合素質(zhì)測評的灰色關(guān)聯(lián)分析法J.承德石油高等專科學(xué)校學(xué)報,

27、2009,11(2):57-59. 上一頁 1 2 3 請教一下用MATLAB實現(xiàn)灰色關(guān)聯(lián)分析的程序初始矩陣為x=1.14 1.49 1.69 2.12 2.43 4.32 5.92 6.07 7.85;3.30 3.47 3.61 3.80 4.00 4.19 4.42 4.61 4.80;6.00 6.00 6.00 7.50 7.50 7.50 9.00 9.00 9.00;1.20 1.20 1.80 1.80 1.80 2.40 2.70 3.60 4.00;4.87 5.89 6.76 7.97 8.84 10.05 11.31 12.25 11.64我寫的程序如下:x1

28、=1.14 1.49 1.69 2.12 2.43 4.32 5.92 6.07 7.85;3.30 3.47 3.61 3.80 4.00 4.19 4.42 4.61 4.80;6.00 6.00 6.00 7.50 7.50 7.50 9.00 9.00 9.00;1.20 1.20 1.80 1.80 1.80 2.40 2.70 3.60 4.00;4.87 5.89 6.76 7.97 8.84 10.05 11.31 12.25 11.64%原始數(shù)據(jù)5行9列x1=xfor i=1:5 for j=1:9 x(i,j)=x(i,j)/x1(1,j) endendx1=xfor i=

29、1:5 for j=1:9 x(i,j)=abs(x(i,j)-x1(i,1) endendmax=x(1,1)min=x(1,1)for i=1:5 for j=1:9 if x(i,j)>=max max=x(i,j) end endendfor i=1:5 for j=1:9 if x(i,j)<=min min=x(i,j) end endendk=0.5 %分辨系數(shù)取值l=(min+k*max)./(x+k*max)%求關(guān)聯(lián)系數(shù)矩陣但是運算錯誤!請教一下高手問題補(bǔ)充: 樓下回答的不對,那樣雖不會運行錯誤,但得不到正確的答案 怎么沒人再給我回答啊555555555其他回答

30、共1條 4.00;4.87 5.89 6.76 7.97 8.84 10.05 11.31 12.25 11.64%原始數(shù)據(jù)5行9列 x1=x %有錯,應(yīng)該為 x=x1for i=1:5 灰色關(guān)聯(lián)matlab程序 瀏覽次數(shù):170次懸賞分:5 | 提問時間:2011-5-25 19:40 | 提問者:zjon111 clear;clc;yangben=12409 15296 18743 22399 26451; %樣本數(shù)據(jù)fangzhen=216314 265810 314045 340903 397983 1.5 4.8 5.9 -0.7 3.3 1184 1204 1113 1102 11

31、6811759 13786 15781 17175 19109 38760 51322 61330 68518 83080 109998 137324 172828 224599 278140 79145 93572 114830 132678 156998 161587 172534 217885 260772 303302 ; %待判數(shù)據(jù)rows,cols=size(fangzhen);p=0.5; %分辨系數(shù)m,n=size(yangben); R=;for irow=1:rows yy=fangzhen(irow,:); data=yy;yangben; data_gyh1=mean(

32、yangben) for i=1:m+1 for j=1:n data_gyh(i,j)=data(i,j)/data_gyh1(j); end end for i=2:m+1 for j=1:n Dij(i-1,j)=abs(data_gyh(1,j)-data_gyh(i,j); end end Dijmax=max(max(Dij); Dijmin=min(min(Dij); for i=1:m for j=1:n Lij(i,j)=(Dijmin+p*Dijmax)/(Dij(i,j)+p*Dijmax); end end LijRowSum=sum(Lij'); for i=

33、1:m Rij(i)=LijRowSum(i)/n; end R=R;Rij;endR哪里出錯了,求高手解答,順便求結(jié)果分析推薦答案 data_gyh1=mean(yangben)得到的是一個數(shù),而data_gyh(i,j)=data(i,j)/data_gyh1(j)中data_gyh1(j)你把data_gyh1作為一個數(shù)組使用的,所以會出錯。追問怎么改合適呢回答其實我不懂灰色關(guān)聯(lián)是什么,所以可能在這個上邊幫不了什么忙,你看看灰色關(guān)聯(lián)的原理吧,data_gyh1=mean(yangben)這一句得到的data_gyh1就是一個定值,而data_gyh(i,j)=data(i,j)/data

34、_gyh1(j)中需要用到的是什么值呢,你從這方面下手考慮吧。剛搜了一下,看到了跟你這個類似的源程序。他的樣本數(shù)據(jù)是3*6的,所以data_gyh1=mean(yangben)得到是yangben的每一列的均值,而你的yangben是一行的,所以應(yīng)該直接讓data_gyh1=yangben。個人意見,僅供參考。參考資料:基于matlab的灰度關(guān)聯(lián)分析法(2010-09-23 10:12:42) 標(biāo)簽: matlab灰度關(guān)聯(lián)分類分類: matlab相關(guān)     做了四天的研究生數(shù)學(xué)建模,感覺做的很一般,應(yīng)該是沒有很好的深入理解題意,而且對于神經(jīng)元的背景信息不是很清楚

35、,導(dǎo)致了后面的東西沒有時間處理,最后一天的熬夜,終于把論文給趕了出來,第二天從早上十點一覺睡到晚上六點半。    關(guān)于建模神經(jīng)元這題主要是分類和聚類問題,前者是類別已知,然后判斷測試樣本是否為某一類。后者是無監(jiān)督學(xué)習(xí),即么有類別信息和其他先驗知識,一般要求滿足最大組內(nèi)相似性和最小組間相似性。我想到了上學(xué)期給同學(xué)做的一個使用灰度關(guān)聯(lián)分析法進(jìn)行大學(xué)生綜合素質(zhì)評價的東西,下面主要講一下那個東西是怎么實現(xiàn)的。    多指標(biāo)綜合測評主要有三大類方法:常規(guī)數(shù)學(xué)方法、模糊數(shù)學(xué)方法、多元統(tǒng)計分析方法。灰色關(guān)聯(lián)分析是灰色系統(tǒng)理論中的一個分支,其對數(shù)據(jù)的

36、要求不是很嚴(yán)格,不要求數(shù)據(jù)分布具有特殊規(guī)律。下面我按照參考文獻(xiàn)1中的內(nèi)容把綜合素質(zhì)評價的程序給實現(xiàn)。下面是灰度關(guān)聯(lián)法進(jìn)行綜合評價的步驟:圖1 灰度關(guān)聯(lián)分析法進(jìn)行綜合測評的步驟圖2 所使用的綜合評價表    我們根據(jù)圖1的步驟和圖2的數(shù)據(jù)進(jìn)行編程實現(xiàn),程序如下:%清除內(nèi)存空間等clear;close all;clc;%載入源數(shù)據(jù)    %其實這里可以載入execl表格的n=15;             &#

37、160;         %參與評價的人數(shù)m=4;                        %參與評價的指標(biāo)個數(shù)X_0=zeros(n,m);            

38、; %          數(shù)據(jù)矩陣X_2=zeros(n,m);             %偏差結(jié)果的求取矩陣X_3=zeros(n,m);             %  相關(guān)系數(shù)計算矩陣a1_0=13 18 17 18 17 17 18 17 13 17 1

39、8 13 18 13 18;a2_0=18 18 17 17 18 13 17 13 18 13 17 13 13 17 17;a3_0=48.67 43.33 43.56 41.89 39.47 43.44 37.97 41.14 39.67 39.83 34.11 40.58 34.19 30.75 21.22;a4_0=10 10.7 3 5.4 5.4 0.7 4.2 0.5 9.3 0.85 2.9 5.45 4.2 2.7 6;    %指標(biāo)數(shù)X_1=a1_0',a2_0',a3_0',a4_0'  

40、 %最后使用到的數(shù)據(jù)矩陣%1 尋找參考列x0=max(a1_0),max(a2_0),max(a3_0),max(a4_0);   %取每列的最大值(指標(biāo)的最大值)%2 計算偏差結(jié)果i=1;while(i=m+1)                                   %為什么這個地方會出問題呢    for j=1:1:n        X_2(j,i)=abs(X_1(j,i)-x0(i);    end;    i=i+1;end%3 確定偏差的最值error_min=min(min(X_2);error_max=max(max(X_2);%4 計算相關(guān)系數(shù)i=1;p=0.5;while(i=m+1)&#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論