繁体   English   中英

Matlab中变量的符号声明

[英]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对其求值时,它将使用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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM