Matlabs“ splitapply”用于具有多个参数的函数

时间:2019-11-21 21:23:45

标签: matlab apply

我不了解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

1 个答案:

答案 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)