【问题标题】:Constructing Symbolic Functions in Matlab在 Matlab 中构造符号函数
【发布时间】:2016-09-10 06:47:27
【问题描述】:

我正在尝试在Matlab中构建一个符号函数,如下:

syms theta
Rx(theta) = cos(theta) + sin(theta);

当我输入Rx(0.1)时,Matlab返回cos(1/10) + sin(1/10)

但我想做的是让 Matlab 对其进行数值评估。我可以使用double(Rx(0.1)) 完成此操作,但是在循环中对更复杂的函数执行相同操作时,每次转换为 double 会导致它运行非常缓慢。有没有办法改变Rx 本身以提供数字输出?

【问题讨论】:

  • 如果您需要数字输出,请完全避免使用符号工具箱。 Rx = @(theta) cos(theta) + sin(theta); 应该同样有效。

标签: matlab


【解决方案1】:

您可以从符号函数创建一个标准(非符号)匿名函数。为此,您使用matlabFunction

syms theta
Rx(theta) = cos(theta) + sin(theta);
Rxd = matlabFunction(Rx);

然后

>> Rxd(0.1)
ans =
   1.094837581924854

请注意,您可能会丢失精度,因为计算是从一开始就以数字方式完成的,而不是象征性地,并且仅在最后才转换为 double

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2016-05-08
    • 2012-05-23
    相关资源
    最近更新 更多