[英]Symbolic declaration of variables in Matlab
我想将我的变量写为其他变量之间的操作。
例如,如果我放置a = c + b
则a保留在其中的值是c与b之间的和运算的数值结果。
如果c = 4且b = 2,则a保持的值为6。
但是我希望a保留符号表达式而不是数字值。 每次我在命令窗口中编写a时,matlab都会将worspace变量的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
对其求值时,它将使用b
和c
的当前值来计算a
。 请注意, b
和c
不再是符号变量,而是转换为双精度型。 然而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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.