我想把我的变量写成其他变量之间的操作。
例如,如果我放置a = c + b
,则表示保留在内的值是c和b之间的和的操作的数值结果。
如果c = 4且b = 2,则a保持的值为6。
但我希望a保留符号表达式而不是数值。 每次我在命令窗口中写一个,matlab cacht c的数值和worspace变量的b的数值,并将它们相加。
通常如果你写一个,matlab会显示这个变量中的数值。 有谁知道怎么做?
答案 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
c
和a
的当前值来计算b
。请注意,c
和a
不再是符号变量,而是转换为双精度变量。但是{{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()