How to convert rows to logical
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Simon Allosserie
le 27 Oct 2022
Commenté : Simon Allosserie
le 10 Nov 2022
I am filtering a set of values in a column vector in multiple steps. In the end, I get the row numbers of the values that should be kept, eg.:
A = 1:10;
%fitering happens
r = [2 7 8]; %the rows to keep
Now for subsequent calculations, I need A with only the filtered values, and 0's in the other values. At the moment I do it like this:
filter = ~min(logical(abs(A-r(:))),[],1)
Afiltered = A.*filter
However this method isn't that elegant so I was wondering if there are some standard functions / quicker ways to get the same?
Due to the nature of the filters, it is not possible to work with masks that have the same length as A. r will always be shorter than A.
0 commentaires
Réponse acceptée
Star Strider
le 27 Oct 2022
Why not just:
A = 1:10;
%fitering happens
r = [2 7 8]; %the rows to keep
Afiltered = zeros(size(A));
Afiltered(r) = A(r)
.
2 commentaires
Plus de réponses (1)
Cris LaPierre
le 27 Oct 2022
I'm not aware of a special function for this, but perhaps a more readable way would be this?
A = 1:10;
r = [2 7 8];
Afiltered=zeros(1,length(A));
Afiltered(r)=r
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!