2

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

例如,如果我把a = c + b a 保留在里面的值是 c 和 b 之间的和运算的数值结果。

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

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

通常,如果您编写 a,matlab 会显示此变量中的数值。有谁知道如何做到这一点?

4

2 回答 2

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的当前值来计算。请注意,and不再是符号变量,而是转换为双精度数。但是仍然是,并且定义成立,因为默认情况下,符号变量中的表达式是未计算的。bcabca

于 2011-09-03T17:00:05.710 回答
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()
于 2011-09-04T10:55:48.180 回答