为什么我在Matlab中调用'错误时'得到'输出参数未分配'

时间:2015-05-04 06:19:59

标签: matlab variables assign

我有一个查找函数关键点的函数。

function [ cr ] = CritPt(f, var1, var2)
f = sym(f);
fx = diff(f,var1);
fy = diff(f,var2);
[xcr,ycr] = solve(fx,fy);
crpt = [xcr,ycr]

我应该在命令窗口中使用函数CritPt来定义一个名为cp的变量,它包含临界点f(x,y)= x ^ 2 * y +(1-y)^ 2

当我尝试这个时,我得到:

>> cp=CritPt('x^2*y+(1-y)^2','x','y')

crpt =

[        0, 1]
[  2^(1/2), 0]
[ -2^(1/2), 0]

Error in CritPt (line 2)
f = sym(f);

Output argument "cr" (and maybe others) not assigned
during call to
"C:\Users\GTAV\Documents\MATLAB\CritPt.m>CritPt".

我尝试了很多替代方案,比如syms cp = [cp] =等等,但显然有些东西我不理解。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

您正在命令窗口中正确使用该功能。

问题出在函数CritPt本身:您需要为变量cr赋值。当函数完成时,它会尝试返回function之后列出的任何变量的值,但如果该变量不存在则会出错。

如果要在最后一行返回变量的值,请将最后一行更改为

cr = [xcr,ycr]

或者,您可以保留最后一行,但更改第一行,以便返回crpt

function [ crpt ] = CritPt(f, var1, var2)