※ 引述《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 文件(第一个连结)