Faster way of replacing multiple rows with same vector without using a loop?
古いコメントを表示
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?
採用された回答
その他の回答 (2 件)
madhan ravi
2019 年 1 月 29 日
idx = [1 3];
a(idx,:) = 0
5 件のコメント
madhan ravi
2019 年 1 月 29 日
編集済み: madhan ravi
2019 年 1 月 29 日
a(idx,:) = [255 100 0]
Stephen23
2019 年 1 月 29 日
madhan ravi
2019 年 1 月 29 日
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
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!