Make all elements of given row numbers equal to NaN.
조회 수: 1 (최근 30일)
이전 댓글 표시
Given a matrix, if any element has a non-finite value, I want to make all elements of that row equal to NaN. For example:
Input:
A=[1 2 NaN
4 5 6
7 NaN 9
0 1 2
3 4 5
6 7 8
Inf 0 1
2 3 4
5 6 7
8 NaN 0];
Output:
B=[NaN NaN NaN
4 5 6
NaN NaN NaN
0 1 2
3 4 5
6 7 8
NaN NaN NaN
2 3 4
5 6 7
NaN NaN NaN];
How can this be done?
This is how I know:
idx_NaNinf = find((isnan(A)|isinf(A)) );
[idx_row,idx_col] = ind2sub(size(A),idx_NaNinf);
With all row numbers stored in idx_row and by using a for loop, I can make the elements of that row equal to NaN. But is there any other more efficient method?
댓글 수: 0
채택된 답변
per isakson
2015년 10월 6일
편집: per isakson
2015년 10월 6일
I guess this is more efficient, and I think it's more readable
B = A;
is_nan_row = any( isnan( A ), 2 );
is_inf_row = any( isinf( A ), 2 );
B( (is_nan_row|is_inf_row), : ) = nan;
댓글 수: 2
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!