【发布时间】:2011-03-25 08:46:25
【问题描述】:
假设我有 D,一个 X×Y×Z 数据矩阵。我也有 M,一个 X-by-Y“掩蔽”矩阵。我的目标是当 M 中的 (Xi,Yi) 为假时,将 D 中的元素 (Xi,Yi,:) 设置为 NaN。
有没有办法避免循环执行此操作?我尝试使用ind2sub,但失败了:
M = logical(round(rand(3,3))); % mask
D = randn(3,3,2); % data
% try getting x,y pairs of elements to be masked
[x,y] = ind2sub(size(M),find(M == 0));
D_masked = D;
D_masked(x,y,:) = NaN; % does not work!
% do it the old-fashioned way
D_masked = D;
for iX = 1:size(M,1)
for iY = 1:size(M,2)
if ~M(iX,iY), D_masked(iX,iY,:) = NaN; end
end
end
我怀疑我在这里遗漏了一些明显的东西。 (:
【问题讨论】: