Matlab中的匿名函数

Matlab中的匿名函数,matlab,Matlab,我尝试在matlab中运行这段代码。我想添加一个匿名函数。该函数本身有一个变量,在每次迭代中都会发生变化。我没能成功。谁能给我一个解决方案?提前谢谢 y=[1 2]; a=@(x) 3*x+y.^2; for n=1:2 a=@(x) a(x) + 3*x+y(n)^2; end a(1) 根据您的评论,请尝试以下操作: function out = f(x) y = [1 2]; out = 0; for n=1:numel(y) out =

我尝试在matlab中运行这段代码。我想添加一个匿名函数。该函数本身有一个变量,在每次迭代中都会发生变化。我没能成功。谁能给我一个解决方案?提前谢谢

y=[1 2];
a=@(x) 3*x+y.^2;


for n=1:2
a=@(x) a(x) + 3*x+y(n)^2; 
end

a(1)

根据您的评论,请尝试以下操作:

function out = f(x)
    y = [1 2];

    out = 0;
    for n=1:numel(y)
        out = out + 3*x + y(n)^2;
    end
end
与:


不需要递归,而且更易于阅读

您到底想做什么?我想递归地添加一个匿名函数。但函数的一个组成部分在每次迭代中都会发生变化。在本例中,“y”正在变化。在本例中,您的答案必须是y=[12 21]?答案是11。但是Matlab给出了以下答案。ans=1518@Janu:您正在使代码难以阅读。您能否通过显示每个步骤中替换的方程式和值,让我们了解您是如何得到
11
的结果的?在
a
的第一个定义中,您似乎将
y
用作2元素数组,但在递归定义中,您开始将其用作标量
y(n)
,因此您必然会得到一个1x2数组……您可以将其矢量化为:
y=[12];f=@(x)和(3*x+y.^2)
>> f(1)
ans =
    11