replace the b-th row and >30-th column of a by a-30
    3 次查看(过去 30 天)
  
       显示 更早的评论
    
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
0 个评论
采纳的回答
  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.
更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Dynamic System Models 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

