Faster way of replacing multiple rows with same vector without using a loop?
Afficher commentaires plus anciens
Hi,
I have a matrix a (see below). I would like to replace the 1st and 3rd row with the same row vector [255 100 0].
a =
245 255 255
254 252 255
251 250 239
Initially I created an index variable 'idx'
idx = [1;3]; % indexing row number for vector replacement
However
a(idx,:) = [255 100 0 ];
would give error messages
'Unable to perform assignment because the size of the left side is 2-by-3 and the size of the right side is 1-by-3'.
How to do it correctly without do it in a loop?
Réponse acceptée
Plus de réponses (2)
madhan ravi
le 29 Jan 2019
idx = [1 3];
a(idx,:) = 0
5 commentaires
madhan ravi
le 29 Jan 2019
Modifié(e) : madhan ravi
le 29 Jan 2019
a(idx,:) = [255 100 0]
Stephen23
le 29 Jan 2019
madhan ravi
le 29 Jan 2019
Ah you are right Stephen I was careless when posting it thnx though!
I don't think it's worth avoiding a loop here. A loop over columns, because there are so few of them, would be as fast as pretty much whatever else you might do, no matter how many rows a has.
rhs=[255,100,0];
for j=1:3
a(idx,j)=rhs(j);
end
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!