我是matlab新手。我有這樣的代碼是這樣的:關於arrayfun在matlab中的一個例子
names=arrayfun(@num2str, 1:nseq_all, 'unif', 0);
搜索後,我明白,arrayfun應用函數的每個元素的數組。所以,我猜在這種情況下,我們將num2str函數應用到數組1的每個元素:nseq_all。 'unif'和0是函數的參數和相應的值部分。我很難理解這部分。任何意見,不勝感激。
我是matlab新手。我有這樣的代碼是這樣的:關於arrayfun在matlab中的一個例子
names=arrayfun(@num2str, 1:nseq_all, 'unif', 0);
搜索後,我明白,arrayfun應用函數的每個元素的數組。所以,我猜在這種情況下,我們將num2str函數應用到數組1的每個元素:nseq_all。 'unif'和0是函數的參數和相應的值部分。我很難理解這部分。任何意見,不勝感激。
'unif',0
是'UniformOutput',false
的簡寫,表示輸出的尺寸與輸入數組1:nseq_all
不一樣。
這是因爲字符串1
尺寸爲1x1,但124
的尺寸爲1x3。
names
將是一個單元格數組,因爲正常的數值數組不能包含具有不同數量元素的行/列。
請務必仔細閱讀arrayfun
documentation。
'unif', 0
是'UniformOutput',false
的簡寫。請注意,Matlab中的parameterName/parameterValue對允許parameterName的縮寫,只要它不與另一個可能的參數衝突。在這種情況下,'un',0
也可以工作。無論如何,這是什麼選擇?
modifiedArray = arrayfun(function_handle, array)
應用於function_handle
定義的函數的每個array
元素,並返回modifiedArray
,這是相同的尺寸array
,並且類任何function_handle
回報。 只有在function_handle
的輸出爲標量時才能使用此語法,儘管級別無關緊要,所以function_handle
的輸出可以是標量結構,即arrayfun(@(x)struct('field',x),magic(4))
有效。
cellArray = arrayfun(function_handle, array, 'UniformOutput', false)
應用於function_handle
定義的函數的每個array
元素,並返回cellArray
,這是大小相同array
。 cellArray
的每個元素都包含呼叫function_handle
的輸出。 如果function_handle
的輸出爲非標量(即使每個計算返回1乘2的數組,這是完全一致的),但是當然,您可以將其與標量輸出一起使用,如果使用此語法必須作爲標量輸出好。
在你的情況,num2str
返回一個字符數組,其是非標如果num2str
這種觀點認爲上述9。因此,你需要設置UniformOutput
到false
。