【问题标题】:Online polynomial curve fitting in SimulinkSimulink 中的在线多项式曲线拟合
【发布时间】:2021-10-29 11:50:06
【问题描述】:

如何在 Simulink 中拟合曲线并仍然生成代码?

我在 Simulink 中有一个传感器模型,它返回向量 Pos_x 和 Pos_y。每个向量的大小为 20x1,并且它们的值每一步时间 (1ms) 都会发生变化。 我正在尝试在 Simulink 中计算适合数据的 3 次多项式 y(x) = p1*x^3 + p2*x^2 + p3*x + p4 的系数。

我在simulink中没有找到任何计算系数的模块,所以我使用了一个简单的Matlab函数

function [p1, p2, p3, p4] = fcn(x,y)
    %  f(x) = p1*x^3 + p2*x^2 + p3*x + p4
    f = fit(x', y', 'Poly3');     % I have also tried "polyfit"
    p1 = f.p1;
    p2 = f.p2;
    p3 = f.p3;
    p4 = f.p4;
end

但我得到了错误: Function 'fit' not supported for code generation.

1- 回到我的问题,如何在 Simulink 中拟合曲线并仍然生成代码? 2- 我也愿意接受任何其他建议

【问题讨论】:

    标签: matlab curve-fitting simulink


    【解决方案1】:

    如果可能,您可以使用 Levenberg-Marquardt 直接使用 LSQCURVEFIT 函数 - 该方法与 Coder 兼容,但有一些限制 - 请参阅详细描述限制的文档。

    在底层 FIT 使用 LSQCURVEFIT,但以非 Coder 兼容的方式。

    【讨论】:

      猜你喜欢
      • 2018-02-16
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 2015-02-08
      • 2019-03-02
      相关资源
      最近更新 更多