2016-01-10 157 views
0

我是Matlab的新手,我目前正在嘗試優化如下所示的嵌套for循環。該循環目前正在爲我的輸入永久運行。使用向量化在Matlab中優化嵌套for循環使用向量化

for i = 1:size(mat,1) 
    for j = 1:size(mat,2) 
      mat(i,j) = some_mapping(mat(i,j)+1); 
    end 
end 

但是我找不到一種矢量化方法。我試過bsxfun和arrayfun,但它似乎不工作(甚至比循環運行更慢)。

也許我是在做一個錯誤的方式。任何幫助表示讚賞!

+4

爲什麼不'mat = some_mapping(mat + 1)'? –

+1

'some_mapping'做些什麼? – Shai

+0

@AndrasDeak我想我不能那樣做。 some_mapping是1x256雙。所以操作本身不是矢量化的。 –

回答

0

至於建議由Andras Deak,如果some_mapping是一個簡單的查找表操作,然後

mat = some_mapping(mat+1); 

注:
- 在測繪工作的秩序,mat值必須爲整數範圍爲[0..numel(some_mapping)-1]
- some_mappingsize不會影響結果的size,它在sizemat中將相同。

+1

@AndrasDeak。 (a)感謝您發現我的錯字。 (b)矢量化和嵌套循環版本的代碼將失敗,但我認爲調試嵌套版本會更容易 - 因爲它將非常清楚哪些條目完全導致了錯誤。 – Shai