根据矩阵的最终索引在矩阵上插入多个列和行

时间:2016-04-30 05:39:49

标签: matlab matrix vector insert nan

我认为我没有找到解决此问题的帖子。这是设置:

A_i是大小为nxm的initiale矩阵,我想添加NaN值,以便生成的矩阵A_f在行和列索引中存储这些NaN值先前的向量b

出于简单的目的,让我们将问题简化为1D A小尺寸的矢量。例如:

A_i = [3 4 12 20 3];
b = [1 3 6 7 10];

结果矩阵将是:

A_f = [NaN 3 NaN 4 12 NaN NaN 20 3 NaN];

这样

>> A_f(b)
ans =
    NaN   NaN   NaN   NaN   NaN

我正在寻找最干净的解决方案,而不仅仅是迭代的解决方法......

1 个答案:

答案 0 :(得分:0)

这是我最好的解决方案:

>> A_f = zeros(1,numel(A_i)+numel(b));
>> A_f(b) = NaN;
>> A_f(~isnan(A_f)) = A_i

A_f =

   NaN   3   NaN     4    12   NaN   NaN    20     3   NaN

谁能找到更好的? (减少行数,避免使用新的Af矩阵,但直接在Ai ...)

对于2D A矩阵

>> A_i = [3 4 12 ; 20 3 6];
>> b1 = [2]; 
>> b2 = [1 4]; 
>> 
>> A_f = zeros(size(A_i)+[numel(b1) numel(b2)]);
>> A_f(b1,:) = NaN;
>> A_f(:,b2) = NaN;
>> A_f(~isnan(A_f)) = A_i

A_f =

   NaN     3     4   NaN    12
   NaN   NaN   NaN   NaN   NaN
   NaN    20     3   NaN     6
相关问题