我有以下功能定义(测试代码):
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
函数中有一些嵌套函数,我在其中声明了一些符号变量a
,b
和c
。但是,当我通过键入
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
函数都可以正常工作。
答案 0 :(得分:2)
以下最小工作示例重新创建了问题,并且在评论中解释Andrew Janke不是错误:
function foo
syms A
function nested
end
end
您可以通过将符号变量明确分配给工作区来解决它:
A = sym('A');