Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中变量的符号声明_Matlab_Variables_Command_Workspace_Symbolic References - Fatal编程技术网

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()
相关问题: