Matlab - polyval数据区分

时间:2016-04-30 07:34:56

标签: matlab plot numerical differentiation

我正在研究曲线拟合等问题,需要找到50点立方拟合的导数。这些问题要求根据数据找出细菌的生长速度。我目前的代码是

time = [1,2,4,5,7,9];
bacteria = [2000,4500,7500,15000,31000,64000];

rcubic = polyfit(time,bacteria,3);
newTime = linspace(1,7,50);
vrcubic = polyval(rcubic,newTime);

growthRate = [diff(vrcubic)./diff(newTime)];
derivative = diff(vrcubic)

我想知道growRate或衍生物对于这个问题是否正确,或者它们是否都是错误的。因为他们给出了明显不同的价值观。此外,随着矢量的长度缩短。

干杯

1 个答案:

答案 0 :(得分:0)

vrcubic相对于时间的衍生物确实由

给出
growthRate = [diff(vrcubic)./diff(newTime)];

您的derivative表达式只是相邻数据点之间的差异。

你也可以在这里使用分析差异

growthRate = polyval( polyder(rcubic), newTime );

我总是更喜欢后者,因为它是正确的导数,即使newTime点被非常稀疏地采样也是如此。