Matlab / Simulink Polyfit

时间:2019-03-02 13:38:50

标签: matlab simulink

我想将二阶方程拟合到如图Figure 1所示的图形上。

我已经有“来自工作空间”块和“范围”块 Figure 2

现在,我的问题是如何拟合二级图。我已经有“汽车”矩阵的“常量”块。然后,我有了“斜坡”块,它在1-365之间创建了斜率,如Figure 3所示。

然后,我具有“最小二乘多项式拟合”和“多项式求值”块Figure 4。因为它不起作用,我在做什么错了?

这是我的matlab代码:

n = importdata('n.txt',';')
cars = n(:,2)
trucks = n(:,3)
bus = n(:,4)
t = linspace(1,365,365)
t = transpose(t)

它给我错误“端口宽度或尺寸错误。..的输出端口1是[32x3]矩阵。”和“输入A的行数必须与输入B的行数匹配。”

1 个答案:

答案 0 :(得分:0)

鉴于您显示的模型,我假设您已经看过Least Square Polynomial Fit块的示例,并且完全误解了它的作用。

它显示了一个示例,其中多项式的系数作为时间的函数是已知的,然后使用Polynomial Evaluation块来评估多项式,然后使用Least Square Polynomial Fit获得该多项式的系数。多项式又回来了。也就是说,这表明当数据“往返”时,尽管两个块都返回到开始的位置,应该使您确信这些块“在做正确的事”。

但是他们显示的不是您想要做的,因此您需要一个不同的模型。

如果您查看Polynomial Evaluation块的文档,则有几个示例说明了预期的输入内容。

第一个输入是自变量,在您的情况下,它看起来应该是模拟时间。您可以为此使用Ramp,但为什么不只使用Clock块。 (如果您确实使用Ramp,那么您希望它的Initial Value0,而不是问题图像中显示的365。)

第二个输入是作为矢量的多项式系数。这些可以预先生成(例如使用MATLAB的polyfit)函数,也可以使用Least Square Polynomial Fit块动态生成。

也就是说,您似乎确实需要以下模型:

Polyval