我不了解Matlab splitapply
函数:
>> f=@(t,x) sum(sum(t),sum(x))
f =
function_handle with value:
@(t,x)sum(sum(t),sum(x))
>> splitapply(f,[1,0;0,0],[1,1;2,2],1:2)
ans =
1 0
我期望将两个矩阵拆分为列,并将前两个列馈入f,结果总和为4 =(1 + 0)+(1 + 2)。然后将第二列都输入f,结果为3 =(0 + 0)+(1 + 2)。
所以我期望
ans =
4 3
但很明显,这不是发生的事情。我不确定为什么。如果我在仅带有一个参数的函数上使用splitapply
,似乎可以达到我的期望:
>> splitapply(@sum,[1,1;2,3],1:2)
ans =
3 4
如果有人可以指出正在发生的事情,我会感到很高兴。如果其他人能比我更了解它,这是文档:https://de.mathworks.com/help/matlab/ref/splitapply.html
答案 0 :(得分:2)
您可能想要
f = @(t,x) sum([sum(t) sum(x)])
或
f = @(t,x) sum(t)+sum(x)
而不是
f = @(t,x) sum(sum(t), sum(x))
后者被解释为计算sum(t)
给出的维数之和。
此更正
sum(x)