替换Matrix Cell中的NaN

时间:2014-05-15 17:00:05

标签: matlab matrix

我有一个矩阵C.

我想在有NaN的框中添加计算值。

解决方案是矩阵B.

我有矩阵和向量Ampiezza = [0.5 0.6 0.7]

C = [               
    0.41 6.36   15.44
    0.28 6.37   15.03
    0.25 6.05   14.90
    0.25 6.05   13.50
    NaN  6.05   12.64
    NaN  6.05   12.19
    NaN  5.09   11.81
    NaN  4.45   9.29
    NaN  3.82   9.23
    NaN  3.82   8.82
    NaN  3.50   8.43
    NaN  2.54   8.18
    NaN  2.22   8.15
    NaN  NaN    5.60
    NaN  NaN    NaN
    NaN  NaN    NaN
    NaN  NaN    NaN 
                          ]

Ampiezza = [0.5 0.6 0.7]

B = [       
    0.41  6.36  15.44
    0.28  6.37  15.03
    0.25  6.05  14.90
    0.25  6.05  13.50
    0.75  6.05  12.64
    NaN   6.05  12.19
    NaN   5.09  11.81
    NaN   4.45  9.29
    NaN   3.82  9.23
    NaN   3.82  8.82
    NaN   3.50  8.43
    NaN   2.54  8.18
    NaN   2.22  8.15
    NaN   2.72  5.60
    NaN   NaN   6.10
    NaN   NaN   NaN
    NaN   NaN   NaN
                        ]

示例:

[Row4, Col1] = 0.25 
I need to replace the NaN in [Row5, Col1] and add 
[Row5, Col1] = [Row4, Col1] + 0.5; 
but 
for i = 6:17 
[Row (i), Col1] = NaN 
I have to do this for all the columns 

[Row13, Col2] = 2.22 

[Row14, Col2] = [Row13, Col2] + 0.6; 

but 
for i = 3:17 
[Row (i), Col1] = NaN 

我必须为矩阵(30,14)做这个工作,向量是Ampiezza(1,14)

1 个答案:

答案 0 :(得分:1)

这假设C的每一列都包含至少一个数字条目,然后至少包含一个NaN(如您的示例所示):

[~, col] = max(isnan(C)); %// find index of first NaN column
ind = col + (0:size(C,2)-1)*size(C,1); %// convert to linear index
B = C; %// initiallize B
B(ind) = B(ind-1) + Ampiezza; %// change entries as desired