如何在Matlab中摆脱Nans分析股票价格?

时间:2013-06-04 09:02:03

标签: matlab nan stocks

我有一个包含大量数据的文件。没有价格信息的地方标记为NaN。我想删除所有行,其中有这样的名称,并删除所有有大量缺失数据的列(因为我需要比例矩阵)。

我还有另一个字符串(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 

1 个答案:

答案 0 :(得分: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'