函数matlab中的匿名函数数组

array of anonymous function inside a function matlab

我在一个函数中定义了一个匿名函数数组,如下所示。

function test(x,y)

    f={@(x,y) (3*y*x^2)
       @(x,y) (x*y)
       @(x,y) (x*2*y^2)
       @(x,y) (2*x*y)}
res2=f{2}(x,y)-2*f{1}(x,y)
res3=f{3}(x,y)-5*f{2}(x,y)
res4=f{4}(x,y)-4*f{2}(x,y))
    
end

我想通过

获得一个3乘10的矩阵
x=2
y=linspace(0.0001,0.001,10)
for i=1:length(y)
final(i)=test(x,y(i));
end

但是,我收到一条错误消息,指出输入变量太多。我该如何纠正?

function test(x,y)

这个函数return没什么。所以在你的主代码中,你要求的输出参数太多了。

您将 return 的函数定义为:

function [output1, output2 , ... , outputn]=f(input1, input2, ... , inputn)

不确定你的情况你想要什么,因为你的主循环只捕获 1 个输出,但在函数内部你计算 3 个变量。