How to loading a vector with values from a logical index
Afficher commentaires plus anciens
I have a vector, Vin, of length m. I also have a logical vector, Idx, to select indices to work on (subset size n < m). I can operate on Vin(Idx) and get Vdata of length n. This is all good. But now I want to generate a new Vout vector that is filled with the values from Vdata at the appropriate index. This can be accomplished by the following code snippet.
Vout=zeros(length(Vin));
k = 1;
for j = 1:length(Vin)
if Idx(j)
Vout(j) = Vdata(k);
k = k + 1;
end
end
This seems verbose ? Is there a more efficient or correct way of doing this? i want the output vector to be of length m, not n
Réponses (1)
Sara
le 16 Juil 2014
Vout = Vin(Idx)
4 commentaires
Timothy Carnahan
le 16 Juil 2014
Sara
le 16 Juil 2014
Vout = zeros(length(Vin),1);
Vout(Idx) = Vin(Idx);
Timothy Carnahan
le 16 Juil 2014
Sara
le 16 Juil 2014
You may want to do zeros(length(Vin),1), otherwise you get a square matrix instead of a 1d array for Vout
Catégories
En savoir plus sur Matrix Indexing dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!