2015-08-08 58 views
0

您好我有两个阵列,输入查询数组值MATLAB

A = [23 Nan 45 Nan Nan 67 50 100 110] and B = [24 49 70 71 72 90 100 120 109] 

NaN表示一些间隙。我想将矩阵B的元素放在A的相同位置,它是NaN。例如,在数组A第2位还有一定的差距,我希望把价值49从矩阵B到那个位置在阵列A.所以,最终的矩阵变成

A = [23 49 45 71 72 67 50 100 110] 

让我知道我可以编写它在MATLAB中。谢谢,

+0

我不知道你是如何在Matlab中的数字数组中有一个字符串('x')。 – Nitish

+0

即只显示缺失值。它是空的。而不是NaN,我把x放在那个地方。 – user962808

回答

2

你可以很容易地使用数组索引来做到这一点。

A = [23 NaN 45 NaN NaN 67 50 100 110] 
B = [24 49 70 71 72 90 100 120 109] 
all_nans = isnan(A) 
A(all_nans) = B(all_nans) 

,并提供:

A = 

    23 49 45 71 72 67 50 100 110 

all_nans包含的指标全部NaNs,下一步基本上是使用需要更换。

+1

值得指出的是,虽然你也可以做'A(isnan(A))= B(isnan(A))',你可以不做'A(A == NaN)= B(A == NaN)就像你可以用'-1'(或任何其他数字)做的那样,因为'NaN'不等于'NaN'。 –