substitute constant to a formula matlab
我在 MATLAB 中定义:
1 2
| syms k2 k3;
k1 = k2/k3; |
其中 k2 和 k3 是符号变量。然后输入 k1 给出输出:
为k2和k3赋值:
然后我在matlab命令行中输入:
是否有任何命令显示结果 k1 = 1/2 = 0.5 而不使用 subs 函数?在我的公式有很多变量的情况下,使用 subs.
很不方便
- subs(k1) 有什么问题?如果已经设置了附加变量,则不需要将它们作为参数提供。
-
我很好奇为什么你接受了我的回答,然后几天后又不接受,当时没有其他选择而且它有效?
-
抱歉,是我的错!
你想使用 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 |
- 那是 eval 的错误版本的文档,它应该是 sym/eval 的。但是,Matlab 似乎不再维护 sym/eval 的文档(除了最小的帮助文件)。这很可能是因为应该使用 subs,即只使用 subs(k1)。
-
感谢您指出@horchler,我已经编辑了我的答案以反映您的意见。
-
在我有很多常量要替换的情况下,由于替换长数组,subs 可能会不方便。所以我想找到一个解决方案,除了'subs'。
-
你是什??么意思"替换一个长数组"?