如何存储功能包装的求解电话?

时间:2014-02-18 11:55:21

标签: matlab function

请跟我说,我是matlab的新手。我正在尝试将调用存储到eigenvalue的另一个函数中,但是它给了我错误:Too many output arguments

function eigenvalue(M)
    syms l;
    eq = det(M - l*[1 0; 0 1]);
    solve(eq == 0)
end

我尝试过以多种不同的方式存储它,但似乎没有任何效果:

>> a = eigenvalue(M)
Error using eigenvalue
Too many output arguments.

>> [a, b] = eigen(M)
Error using eigenvalue
Too many output arguments.

奇怪的是,如果我求解正态多项式方程式,我可以sol=solve(x^2==4)完全正确,并且可以毫无问题地访问sol(0)sol(1)。我想我还没有选择一个简单的matlab概念,感谢任何愿意帮助的人!

2 个答案:

答案 0 :(得分:3)

您的问题是您的函数中没有任何输出参数。

function eigenvalue(M)

在MATLAB中,应该 *使用以下语法:

function output = func_name(input_1,input_2,...)

您有两种选择:

您可以跳过第一行并将其另存为脚本,如下所示:

syms l;
eq = det(M - l*[1 0; 0 1]);
solve(eq == 0)

或者,您可以将其保存为函数,但使用输出变量,如下所示:

function output = eigenvalue(M)
    syms l;
    eq = det(M - l*[1 0; 0 1]);
    output = solve(eq == 0)
end

*你使用我所描述的语法,但你可以使用你使用的语法。但是,如果这样做,除了可能将结果打印到屏幕外,该功能不会给你任何回复。您将无法使用函数内部创建的任何变量。

答案 1 :(得分:0)

如果希望函数提供输出参数,则必须在函数定义中声明它。 E.g。

function a = eigenvalue(M)

然后,您需要确保为函数体中的每个输出变量赋值。