Matlab:“使用assignin时出错:尝试将”c“添加到静态工作区”

时间:2013-06-14 09:37:20

标签: matlab nested environment-variables symbolic-math

我有以下功能定义(测试代码):

function [X,Y,Z] = test(x,y,z)

syms a b c;
a = b + c;   % This is where it gets wrong

X=x;
Y=y;
Z=z;

keyboard

% nested functions
    function y = fun1(t,x)
        y=t+x;
    end

    function res = bvpbc(y0,yT)
       res= y0+yT;
    end

end

基本上,我在test函数中有一些嵌套函数,我在其中声明了一些符号变量abc。但是,当我通过键入

运行该功能时

test(1,1,1)

始终存在此错误消息:

Error using assignin
Attempt to add "b" to a static workspace.
 See MATLAB Programming, Restrictions on Assigning to
 Variables for details.

Error in syms (line 66)
        assignin('caller',x,sym(x));

Error in test (line 3)
    syms a b c;

符号声明似乎有些不对劲,但我不明白为什么。我该如何解决?

谢谢!

编辑:此外,每当我删除两个嵌套函数时,test函数都可以正常工作。

1 个答案:

答案 0 :(得分:2)

以下最小工作示例重新创建了问题,并且在评论中解释Andrew Janke不是错误:

function foo
syms A

    function nested
    end

end

您可以通过将符号变量明确分配给工作区来解决它:

A = sym('A');