> f=@(t,x) sum(sum(t),sum(x)) f = function_handle with value: @(t,x)-6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:58:47 25 4
gpt4 key购买 nike

我不懂 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

最佳答案

你可能想要

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) 给出的维度.

通过这次修正,
>> f = @(t,x) sum([sum(t) sum(x)]);
>> splitapply(f,[1,0;0,0],[1,1;2,2],1:2)
ans =
4 3

关于Matlabs "splitapply"用于具有多个参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58983989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com