Matlab中变量的符号声明



我想把我的变量写成其他变量之间的操作

例如,如果我把a = c + b放在里面,那么a保存在里面的值就是c和b的和运算的数值结果。

如果c = 4且b = 2,则a保留的值为6。

但是我希望a保留符号表达式而不是数值。每次在命令窗口中写入a时,matlab都会缓存工作空间变量c的数值和b的数值,并对它们求和。

通常如果你写a, matlab会显示这个变量中的数值。有人知道怎么做吗?

您可以使用符号工具箱来完成此操作。下面是一个例子:

syms a b c %# declare a b c to be symbolic variables
a = b + c;
b=3;c=4; %# now set values for b and c
eval(a)  %# evaluate the expression in a
ans =
    7
b=5;c=9; %# change the values of b and c
eval(a)
ans =
    14

所以a的定义仍然是b + c(您可以通过在命令窗口输入a来检查这一点),当您使用eval对其进行评估时,它使用bc的当前值来计算a。注意,bc不再是符号变量,而是被转换为双精度类型。然而,a仍然是,并且定义保持不变,因为默认情况下,符号变量中的表达式保持未求值。

如果您没有符号工具箱,您可以使用匿名函数来实现类似的结果。

b=2; c=4; 
a=@()(evalin('caller','b+c')); 
a(), 
ans =
     6
b=1; 
a()

ans =
     5

不理想,但可能有帮助。

您可以使用下面的函数使这更容易:

function [ anonFunction ] = AnonEval( expression )
%AnonEval Create an anonymous function that evaluates an expression
   anonFunction = @()(evalin('caller',expression)); 
end
b=2,c=4, 
a=AnonEval('b+c'); 
a(),
b=1; 
a()

相关内容

  • 没有找到相关文章

最新更新