If isnan(x) make columns also NaN

2 次查看(过去 30 天)
Robert
Robert 2016-2-10
回答: Wolfgang 2016-2-10
I have a horizontal array or data 1:1505 made of Nans and 1s (inA4)
I also have a matrix of data 96:1505 (Approx4)
Where ever a NaN appears in 'inA1' I want the entire column of Approx 1 to become NaNs.
This is what I have come up with so far, but It's not working. I'm sure the solution is simple but I can not work it out thus far
for i = 1:96;
j = 1:1505;
if inA4(j) == 1;
Approx4(i,j) = Approx4(i,j);
else isnan(Approx4(i,j));
end;
end;

回答(2 个)

Stephen23
Stephen23 2016-2-10
编辑:Stephen23 2016-2-10
This is trivial using basic MATLAB indexing:
>> A = [1,2,3;4,5,6;7,8,9]
A =
1 2 3
4 5 6
7 8 9
>> B = [1,NaN,1]
B =
1 NaN 1
>> A(:,isnan(B)) = NaN
A =
1 NaN 3
4 NaN 6
7 NaN 9
You should learn to how use MATLAB instead of fighting it with inefficient loops:

Wolfgang
Wolfgang 2016-2-10
idxNaNs = isnan(inA4); % find NaNs in inA4
Approx4(:,idxNaNs) = NaN; % set columns to NaN

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by