2013-06-04 67 views
1

我有一個包含大量數據的文件。沒有價格信息的地方標記爲NaN。我想刪除所有的行,這裏有這樣的名字,並刪除所有有很多數據缺失的列(因爲我需要比例矩陣)。如何在matlab分析股票價格中擺脫Nans?

我還有另一個字符串(AssetList),其中有關於所有代號的信息。如果列將被刪除,則需要在那裏刪除按鈕。

我非常感謝任何幫助。

數據:

6,41 16,51 x  x 69,78 

6,22 16  x  x 68,48 

6,17 15,61 x  x 69,46 

x  x  x  x x 

x  x  x  x x 

x  x  x  x x 

5,83 15,14 x  x 69,85 

6,4  17,64 x  x 71,03 

6,07 16,04 x  x 68,64 

5,91 17,09 x  x 68,92 

6  18,19 x  x 68,72 

x  x  x  x x 

x  x  x  x x 

5,58 17,17 x  x 69,02 

5,3  16,83 x  x 67,69 

5,66 19,65 x  x 68,64 

5,65 20,86 x  x 69,45 

5,43 20,46 x  x 68,94 

x  x  x  x x 

x  x  x  x x 

5,58 2  0,16 x 68,73 

資產列表:

FLWS SRCE FUBC DDD MMM 
+0

究竟你想讓結果看起來像嗎?如果你簡單地用'x'刪除所有行,則什麼都不會留下。 –

+0

我想他想刪除所有NaN的行?但我不知道什麼構成了很多NaN在列中...... – Huguenot

+1

這應該讓你開始http://stackoverflow.com/questions/5202680/matlab-how-to-efficiently-remove-nan-elements-從矩陣 – Huguenot

回答

0

我要在這裏作出一些假設,因爲我沒有完全理解你的問題。

下面首先刪除存在的NaN專門所有行,並通過刪除包含所有列至少一個NaN繼續:

M = [ ... 
    6.41 16.51 NaN NaN 69.78       
    6.22 16  NaN NaN 68.48       
    6.17 15.61 NaN NaN 69.46       
    NaN  NaN  NaN NaN NaN       
    NaN  NaN  NaN NaN NaN       
    NaN  NaN  NaN NaN NaN       
    5.83 15.14 NaN NaN 69.85       
    6.4  17.64 NaN NaN 71.03       
    6.07 16.04 NaN NaN 68.64       
    5.91 17.09 NaN NaN 68.92       
    6  18.19 NaN NaN 68.72       
    NaN  NaN  NaN NaN NaN        
    NaN  NaN  NaN NaN NaN       
    5.58 17.17 NaN NaN 69.02       
    5.3  16.83 NaN NaN 67.69       
    5.66 19.65 NaN NaN 68.64       
    5.65 20.86 NaN NaN 69.45       
    5.43 20.46 NaN NaN 68.94       
    NaN  NaN  NaN NaN NaN       
    NaN  NaN  NaN NaN NaN    
    5.58 2  0.16 NaN 68.73]; 

AssetList = { 
    'FLWS' 'SRCE' 'FUBC' 'DDD' 'MMM' }; 

% Delete all-NaN rows 
M(all(isnan(M),2),:) = []; 

% Delete any-NaN columns 
colsToBeDeleted = any(isnan(M)); 
M(:, colsToBeDeleted) = [] 
AssetList(colsToBeDeleted) = [] 

結果:

M = 
    6.4100 16.5100 69.7800 
    6.2200 16.0000 68.4800 
    6.1700 15.6100 69.4600 
    5.8300 15.1400 69.8500 
    6.4000 17.6400 71.0300 
    6.0700 16.0400 68.6400 
    5.9100 17.0900 68.9200 
    6.0000 18.1900 68.7200 
    5.5800 17.1700 69.0200 
    5.3000 16.8300 67.6900 
    5.6600 19.6500 68.6400 
    5.6500 20.8600 69.4500 
    5.4300 20.4600 68.9400 
    5.5800 2.0000 68.7300 

AssetList = 
    'FLWS' 'SRCE' 'MMM' 
+0

哦,這正是我在找的東西。 Rody非常感謝你的幫助。這很棒。 –