在matlab中需要的地方插入NaNs

时间:2013-08-07 18:29:50

标签: matlab insert

我有以下三个向量,并且我想将NaNs插入B,其中A错过了An中的数据点。所以我的Bn应为[0.1;0.2;0.3;NaN;NaN;0.6;0.7]。我怎么能得到Bn?感谢.--济

A=[1;2;3;6;7]; An=[1;2;3;4;5;6;7]; B=[0.1;0.2;0.3;0.6;0.7];

1 个答案:

答案 0 :(得分:1)

好的,首先,你不能将字符串'NaN'存储到矩阵的一个单元格中,它必须存储在单元格数组中。 如果单元格数组是一个好的输出,下面的代码片段为您提供了解决方案。 如果您有任何问题或疑虑,请与我们联系。

忘掉斜体部分,谢谢David K.

   % NaN solution for Jackie

   A=[1;2;3;6;7]; An=[1;2;3;4;5;6;7]; B=[0.1;0.2;0.3;0.6;0.7];

   len = max(length(A),length(An))
   Bn = zeros(len,1);

   k = 0; % adjust the index so that you don't call B outside of its size

   for i =1 :len
       ind= A(An(i)==A);
       if isempty(ind) ==1
       Bn(i) = nan(1,1)
       k = k+1;
       else
       Bn(i) = B(i-k)
       end
   end