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 выбраны очень редко.

Другие вопросы по тегам