2012-07-25 63 views
0

我試圖分析從CSV文件中獲取的數據集。數據讀入matlab後,我只剩下一個我的數據的變量。每個文件之間的列數和行數會發生變化。有沒有辦法平均每列,然後創建一個平均值最接近某個值的變量?然後在中間列的前後直接選擇列併爲它們創建變量,併爲平均值最低的列創建一個變量?目前,我正在手動選擇列併爲其創建變量。多列,選擇最接近值的方式

例如:

我有這張數字表。 (我用同樣的號碼中的每一列,便於平均的緣故在這個例子中。

1  2  3  4  5  

    1  2  3  4  5 

    1  2  3  4  5 

    1  2  3  4  5 

    1  2  3  4  5 

比方說,我想其平均最接近3.2

該列將是第3列,其平均值爲列3.然後我想要代碼選擇列(第2列)之前的列和列(第4列)之後的列以及平均值最低的列(列1)

回答

2

首先得到平均值(我假設數據矩陣在變量X中):

Xmns = mean(X); 

然後找到最小值,用「MIN」:

[val,ind] = min(Xmns); 

「VAL」保持的最小值,「IND」在Xmns對應的索引,這是相應的列。

要找到列是什麼意思最接近特定值,你可以再次使用min:

[val,ind] = min(abs(Xmns-key_val)); 

現在「實業」持有列索引,平均最接近「key_val」。下一列只是「ind + 1」和前一個「ind-1」 - 只要確保你沒有超出矩陣的末尾(即ind可能已經是1或大小(X,2))。

此外,由於列索引「IND」,創建與該列一個新的變量,你只需使用:

sc= X(:,ind); 

,如果你想從X刪除該列:

X(:,ind) = []; 

就是這樣。

+0

非常感謝您的幫助! – 2012-07-25 16:27:06