Matlab中变量的符号声明

时间:2011-09-03 16:39:16

标签: matlab variables command workspace symbolic-references

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

例如,如果我放置a = c + b,则表示保留在内的值是c和b之间的和的操作的数值结果。

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

但我希望a保留符号表达式而不是数值。 每次我在命令窗口中写一个,matlab cacht c的数值和worspace变量的b的数值,并将它们相加。

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

2 个答案:

答案 0 :(得分:5)

您可以使用符号工具箱执行此操作。这是一个例子:

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进行评估时使用b ca的当前值来计算b。请注意,ca不再是符号变量,而是转换为双精度变量。但是{{1}}仍然是,并且该定义成立,因为默认情况下,符号变量中的表达式保持未评估。

答案 1 :(得分:2)

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

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()