在 MATLAB 中反转变量赋值
Reversing the variable assignments in MATLAB
如果我有一个字符串"x1 = chyl_gi"
,其中x1和chyl_gi都被定义为符号变量,那么语句就可以求值
输入 x1
将返回值 chyl_gi
。
输入 chyl_gi
将返回 chyl_gi
。
如何更改 "x1 = chyl_gi"
的计算,以便输入 chyl_gi
将导致返回 x1
?我无法更改变量的键入顺序,因为我正在使用这种格式的大型文本文件:
x1 = 一些变量
x2 = 另一个变量
...
现在知道您的预期用途,我建议使用 subs
功能。开始解析您的文本文件以获取映射:
syms x1 x2 chyl_gi chyl_gj a b c
mapping={x1,chyl_gi;x2,chyl_gj} %represents x1=chyl_gi and x2=chyl_gj;
还有一些示例表达式:
expr=x1+chyl_gi*(a+b+c);
现在您可以简单地使用 subs 函数:
subs(expr,mapping,mapping(:,2:-1:1));
哪个returns:
chyl_gi + x1*(a + b + c)
与我上面评论中的示例相比,优势在于,您在这里真正使用了符号引擎。
如果我有一个字符串"x1 = chyl_gi"
,其中x1和chyl_gi都被定义为符号变量,那么语句就可以求值
输入 x1
将返回值 chyl_gi
。
输入 chyl_gi
将返回 chyl_gi
。
如何更改 "x1 = chyl_gi"
的计算,以便输入 chyl_gi
将导致返回 x1
?我无法更改变量的键入顺序,因为我正在使用这种格式的大型文本文件:
x1 = 一些变量 x2 = 另一个变量 ...
现在知道您的预期用途,我建议使用 subs
功能。开始解析您的文本文件以获取映射:
syms x1 x2 chyl_gi chyl_gj a b c
mapping={x1,chyl_gi;x2,chyl_gj} %represents x1=chyl_gi and x2=chyl_gj;
还有一些示例表达式:
expr=x1+chyl_gi*(a+b+c);
现在您可以简单地使用 subs 函数:
subs(expr,mapping,mapping(:,2:-1:1));
哪个returns:
chyl_gi + x1*(a + b + c)
与我上面评论中的示例相比,优势在于,您在这里真正使用了符号引擎。