Angenommen, ich habe D, eine X-mal-Y-mal-Z-Datenmatrix. Ich habe auch M, eine X-mal-Y "Maskierungs"-Matrix. Mein Ziel ist es, die Elemente (Xi,Yi,:) in D auf NaN zu setzen, wenn (Xi,Yi) in M falsch ist.
Gibt es eine Möglichkeit, dies in einer Schleife zu vermeiden? Ich habe versucht, mit ind2sub
aber das schlägt fehl:
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
Ich vermute, ich übersehe hier etwas Offensichtliches. (: