【问题标题】:Why am I getting 'output argument not assigned during call to' error in Matlab为什么我在 Matlab 中收到“调用期间未分配输出参数”错误
【发布时间】:2026-01-10 16:55:01
【问题描述】:

我有一个查找函数临界点的函数。

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] = etc 等,但显然有些东西我不理解。任何帮助将不胜感激

【问题讨论】:

    标签: matlab variables assign


    【解决方案1】:

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

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

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

    cr = [xcr,ycr]
    

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

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

    【讨论】: