Matlab中变量的符号声明
我想把我的变量写成其他变量之间的操作 例如,如果我把Matlab中变量的符号声明,matlab,variables,command,workspace,symbolic-references,Matlab,Variables,Command,Workspace,Symbolic References,我想把我的变量写成其他变量之间的操作 例如,如果我把a=c+b放进去,那么a保存在里面的值就是c和b之间求和运算的数值结果 如果c=4,b=2,则a保持的值为6 但是我希望a保留符号表达式而不是数值。 每次我在命令窗口中写a时,matlab计算worspace变量的c和b的数值,并求和它们 通常,如果编写一个变量,matlab会显示该变量中的数值。 有人知道怎么做吗?您可以使用符号工具箱来做这件事。下面是一个例子: syms a b c %# declare a b c to be symbol
a=c+b
放进去,那么a保存在里面的值就是c和b之间求和运算的数值结果
如果c=4,b=2,则a保持的值为6
但是我希望a保留符号表达式而不是数值。
每次我在命令窗口中写a时,matlab计算worspace变量的c和b的数值,并求和它们
通常,如果编写一个变量,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()
相关问题: