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 Center および File ExchangeLogical についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by