【发布时间】:2014-04-10 18:14:02
【问题描述】:
我想使用逻辑掩码索引矩阵的一部分。因此,作为输入,我有一个矩阵 A,其中有一些 nan 值,我为此使用 isnan 创建了一个 mask。此外,我有一个向量 v 的值,我想插入到 A A(mask)=v 中。然后我使用 A B=[A;A;A] 构造另一个矩阵 B。现在我想将v 中的值应用到B 中的正确位置。如何在 Matlab 中做到这一点而不创建 temp=B(1:size(A,1),1:size(A,2)) 矩阵或创建新的 mask=[mask;false(2*size(A,1),size(A,2))]?
再来一次:
A = rand(2,10);
v = A(A>0.5);
A(A>0.5) = nan;
mask = isnan(A);
B=[A;A;A];
% now how to write v to B?
% not doing one of those:
tmp = B(1:2,:);
tmp(mask) = v;
B(1:2,:) = tmp;
%...
mask1 = [mask;false(4,10)]
mask2 = [false(2,10);mask;false(2,10)]
mask3 = [false(4,10);mask]
B(mask1) = v;
B(mask2) = v;
B(mask3) = v;
% what i miss is something like B(1:2,:)(mask)
【问题讨论】: