2012-09-25 156 views
1

我的問題是:有沒有在MATLAB/Octave中矢量化這個操作的方法?向量化MATLAB/Octave中的for循環

y = %a (m x 1) vector, with every entry in [1, 10] 
y2 = repmat(1 : 10, [m 1]); 
for i = 1 : m 
    y2(i, :) = (y2(i, :) == y(i)); 
end 
+0

@macduff:我似乎沒有用'kron'得到正確的結果。 – Jonas

+0

@Jonas,謝謝你的提問,我對我的評論有些倉促。 :-) – macduff

回答

4

bsxfun既擴大和矢量化計算的一個很好的方式(如果它是有益的,將執行多線程計算)。

m = 10; 

y = randperm(m); 

y2 = bsxfun(@eq,y,(1:m)')'; 
+0

正是我需要的。謝謝! –

+0

@JoseRamirez:請考慮接受答案,如果你認爲它有幫助 – Jonas