将曲线拟合多项式值指定给向量

时间:2016-12-02 08:12:30

标签: matlab vector

我试图获得相对于电动机速度的不同扭矩值的矢量。为此,我在某些速度下使用了一些扭矩值,并尝试将曲线拟合到它们。

tpdata=[0 10 20 30 40 50 60 65 70 75 80 85 90 93.3 95.8 98 99 100];
pdata=[3.3 3.05 2.81 2.79 2.80 2.88 3.02 3.12 3.20 3.28 3.13 2.75 2.10 1.5 1 0.5 0.25 0];

我根据自己的需要修改了它

u=2880/690

ydata=pdata*3.65*u
tsdata=tpdata*30/u

我使用曲线拟合工具来获得常数。

p1 = -2.4592e-20
  p2 = 1.51e-16
  p3 = -2.7946e-13
  p4 = 2.3662e-10
  p5 = -1.0391e-07
  p6 = 2.3887e-05
  p7 = -0.0024883
  p8 = 0.035497
  p9 = 50.272

我想将拟合多项式的解(从1 rpm到720 rpm)分配给我命名为y的矢量(扭矩值)

我可以得到解决方案图但我看不到它们或将它们指定为矢量。

for i=1:720
  y = p1*i^8 + p2*i^7 + p3*i^6 + p4*i^5 + p5*i^4 + p6*i^3 + p7*i^2 + p8*i + p9;
  plot(i,y,'d');
  hold on 
  grid on
  end

当我添加y =零(1,720)并将y更改为y(1,i)时,脚本将失败。

这是什么原因?

1 个答案:

答案 0 :(得分:0)

您每次都在y中保存解决方案,并在下一个循环中被覆盖。你应该这样做:

for i=1:720
      y(i) = p1*i^8 + p2*i^7 + p3*i^6 + p4*i^5 + p5*i^4 + p6*i^3 + p7*i^2 + p8*i + p9;     
end

plot(y,'d');
hold on 
grid on

现在你得到一个向量y(1x720)。你不需要做y =零(1,720)......