Matlab - поливальное дифференцирование данных
Я работаю над некоторыми проблемами с кривой подгонки и т. Д., И мне нужно найти производную от кубической подгонки 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 ответ
Производная по времени действительно дается как
growthRate = [diff(vrcubic)./diff(newTime)];
Ваш derivative
Выражение просто различия между соседними точками данных.
Вы также можете использовать аналитическое дифференцирование здесь
growthRate = polyval( polyder(rcubic), newTime );
Я всегда предпочел бы последнее, так как оно является правильной производной, даже если точки newTime выбраны очень редко.