我认为我没有找到解决此问题的帖子。这是设置:
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
我正在寻找最干净的解决方案,而不仅仅是迭代的解决方法......
答案 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