Re: [討論] 有關於arrayfun處理struct array的問題

作者: sppmg (sppmg)   2017-11-10 19:29:23
※ 引述《wdw0925 (wdw0925)》之銘言:
: 這是把struct當成array來處理的範例:
: datas = repmat(struct('x', [], 'y', []), 100, 1)
: for i = 1:100
: numData = randsample(10:100, 1);
: datas(i).x = randn(numData, 1);
: datas(i).y = 1 + datas(i).x* 2 + randn(numData, 1);
: end
: lmModels = arrayfun(@(d) fitlm(d.y, d.x), datas, 'uni', false);
: 這是之前某位大神po的code 小弟想問的是最後一行
: lmModels = arrayfun(@(d) fitlm(d.y, d.x), datas, 'uni', false);
: 是什麼意思呢? 請各位大大指教 謝謝!
https://www.mathworks.com/help/matlab/ref/arrayfun.html
B = arrayfun(func,A)
B = arrayfun(___,Name,Value)
@(d) fitlm(d.y, d.x)
是一個匿名函數,就是將
function func(args)
...
end
略去函數名 func ,僅用一次的函數定義。
@ 得到 function handle ,用於 callback 功能。
(https://stackoverflow.com/a/2100680 )
這裡就是將輸入參數(已假定為結構變數)中的欄位分別輸入 fitlm()
datas 即為此一輸入參數。
後面的 'uni', false 是 arrayfun 選項 'UniformOutput', false
用途請參考 matlab 文件(第一個連結)

Links booklink

Contact Us: admin [ a t ] ucptt.com