replace the b-th row and >30-th column of a by a-30

1 ビュー (過去 30 日間)
Chaoyang Jiang
Chaoyang Jiang 2018 年 4 月 1 日
編集済み: Walter Roberson 2018 年 4 月 1 日
I want to replace the b-th row and >30-th column of a by a-30. How to make the following code more efficient within one line? Thank you!
a=randi(100,[100,100]);
b=randi(100,[30,1]);
for i=1:length(b)
a(b(i),30:end)=a(b(i),30:end)-30;
end

採用された回答

Walter Roberson
Walter Roberson 2018 年 4 月 1 日
There is no more efficient version for that.
I am not saying that it cannot be done in vectorized form: it can be done in vectorized form. I am saying that you need to make extra calculations and involve extra memory in such a way that the for loop is likely to be more efficient. Especially since duplicate b values are possible so you are going to be affecting the same location multiple times.
  1 件のコメント
Chaoyang Jiang
Chaoyang Jiang 2018 年 4 月 1 日
Correct. Thank you for your answer.

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by