Make all elements of given row numbers equal to NaN.
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
per isakson
le 6 Oct 2015
Modifié(e) : per isakson
le 6 Oct 2015
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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Numeric Types dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!