2016-10-05 65 views
-2

在MATLAB中,我想在不使用函數for的情況下在循環中使用arrayfun使用MATLAB循環遍歷arrayfun

的一般語法如下:

arrayfun(@(x,i,j) func(x), M{i,j}) 

其中(i,j)是在功能func(x)其中x = M施加的矩陣M的索引。

目的是申請arrayfun(@(x,i,j) func(x), M{i,j})所有i=1,..,nj=1,...,n沒有循環。

謝謝

+4

你能告訴我們一個[mcve] –

+2

通常,函數func對此非常重要 - 你能向我們展示函數本身,還是一個最小的例子(見Ander Biguri的評論)功能? – hbaderts

+2

爲什麼你不想使用'for'? – excaza

回答

1

好,Xzibit的會說「喲耶,我聽說你喜歡的一切,但for,所以我們把一個arrayfunarrayfun這樣你就可以在你的循環迴路」

result = reshape(arrayfun(   ... 
    @(k) arrayfun(@(x) func(x), M{k}), ... 
    1:numel(M),      ... 
    'UniformOutput', false ... 
), size(M)); 

甚至更​​好:

result = arrayfun(... 
    @(k) arrayfun(@func, M{k}), ... 
    reshape(1:numel(M),size(M)), ... 
    'UniformOutput', false  ... 
); 

但—加油! —一個人可以比Xzibit做更好的MATLAB! :-)