关于替换:将常数替换为公式matlab

substitute constant to a formula matlab

我在 MATLAB 中定义:

1
2
syms k2 k3;
k1 = k2/k3;

其中 k2k3 是符号变量。然后输入 k1 给出输出:

1
2
3
k1 =

k2/k3

k2k3赋值:

1
k2 = 1; k3 = 2;

然后我在matlab命令行中输入:

1
2
3
4
5
>> k1

k1 =

k2/k3

是否有任何命令显示结果 k1 = 1/2 = 0.5 而不使用 subs 函数?在我的公式有很多变量的情况下,使用 subs.

很不方便


你想使用 eval(k1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
syms k2 k3;
k1 = k2/k3;

eval(k1) % output k1 = k2/k3

k2 = 1;

eval(k1) % output k1 = 1/k3

k3 = 2;

eval(k1) % output ans = 0.5

k1       % output k1 = k2/k3

编辑:
在评论中已经指出 subs 以相同的方式工作(并且可能更可取)。来自 subs 文档:

subs(s) returns a copy of s replacing symbolic variables in s with their values obtained from the calling function and the MATLAB?? workspace

所以你可以像上面使用eval(k1)一样使用subs(k1)。它为前两个示例提供了相同的输出,最后一个示例利用了结果的精确小数形式,如图所示。

1
subs(k1) % ouput ans = 1/2