1. 程式人生 > 其它 >Matlab學習報告 20-12-08

Matlab學習報告 20-12-08

技術標籤:matlab

Matlab學習報告 20-12-08

  1. 散點圖繪製
  2. 灰色關聯度分析GRA

散點圖繪製

以.txt檔案匯入,數值由空格間隔

這裡是ho2.txt
1 5 4 16 8
5 43 2 6 8
6 8 4 32 1
90 7 8 7 6
5 9 81 2 3
4 7 34 4 67

% Load the file to the matrix, M :
M = load('ho2.txt') 
%此時M為矩陣,可用M(m,n)呼叫第m行n列的元素
表示式函式功能
A(1)將二維矩陣A重組為一維陣列,返回陣列中第一個元素
A(: , j)返回二維矩陣A中第 j 列 列向量
A(: , j : k)返回二維矩陣A中第 j 列到第 k列 列向量組成的子矩陣
A( i : k , j : m)返回二維矩陣A中第 i 行到第 k 行 行向量和 第 j 列到第 m 列 列向量的交集組成的子矩陣
plot(M(1:),M(2:),'r.');hold on;        % 點    r=紅色
plot(M(1:),M(3:),'g*');hold on;        % 星星  g=綠色
plot(M(1:),M(4:),'o');hold on;         % 圓圈  預設是藍色
plot(M(1:),M(5:),'mo','MarkerSize',15) % 大的圓圈  m=
紫色 %plot函式繪圖,前為x軸,後為y軸 %hold on使其畫在一張圖內

灰色關聯度分析

用於資料降維處理,尋找關鍵變數組,簡化模型。

第一步:確定分析數列
對於兩個系統之間的因素,其隨時間或不同物件而變化的關聯性大小的量度,稱為關聯度。在系統發展過程中,若兩個因素變化的趨勢具有一致性,即同步變化程度較高,即可謂二者關聯程度較高;反之,則較低。因此,灰色關聯分析方法,是根據因素之間發展趨勢的相似或相異程度,亦即“灰色關聯度”,作為衡量因素間關聯程度的一種方法。
如以ho2.txt第一行數列為參考數列,以後面4行為比較數列,意為比較後四行所代表的四個變數與參考變數的關聯度。

x=M(1:
); %參考佇列 %matlab對引號無要求。 %加引號只代表輸出x(在工作區中顯示) y=M(2:end,:); %比較佇列

第二步:變數歸一化
在這裡插入圖片描述由於系統中各因素列中的資料可能因量綱不同,不便於比較或在比較時難以得到正確的結論。因此在進行灰色關聯度分析時,一般都要進行資料的無量綱化處理。

                     %資料均值化處理,注意應當放在提取佇列之前
M_mean=mean(M,2);
for i = 1:index_num  %index_num為行數,可用size函式得到
    M(i,:) = M(i,:)/M_mean(i,1);
end

第三步:求解關聯度係數


ρ∈(0,∞),稱為分辨係數。ρ越小,分辨力越大,一般ρ的取值區間為 (0,1),具體取值可視情況而定。當 ρ≤0.5463時,分辨力最好,通常取ρ = 0.5。

第四步,計算關聯度
因為關聯絡數是比較數列與參考數列在各個時刻(即曲線中的各點)的關聯程度值,所以它的數不止一個,而資訊過於分散不便於進行整體性比較。因此有必要將各個時刻(即曲線中的各點)的關聯絡數集中為一個值,即求其平均值,作為比較數列與參考數列間關聯程度的數量表示
其中,r越大,表示此比較變數與參考變數關聯度越大

m2=size(y,1); %求比較數列的個數
for j=1:m2
    t(j,:)=y(j,:)-x;
end
mn=min(min(abs(t'))); %求最小差
mx=max(max(abs(t'))); %求最大差
rho=0.5; %分辨係數設定
ksi=(mn+rho*mx)./(abs(t)+rho*mx); %求關聯絡數
r=sum(ksi')/n %求關聯度
[rs,rind]=sort(r,'descend') %對關聯度進行排序
%執行結果的r表為各關聯度,rind表即為關聯度大小排序的結果。