KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Suppose I have D, an X-by-Y-by-Z data matrix. I also have M, an X-by-Y "masking" matrix. My goal is to set the elements (Xi,Yi,:) in D to NaN when (Xi,Yi) in M is false. Is there any way to avoid doing this in a loop? I tried using ind2sub , but that fails: 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 I suspect I'm missing something obvious here. (:
Tags (comma-separated)
Save Edits
Cancel