Matlab:diff(interp1(...'pchip'))产生奇怪的结果?

时间:2015-10-22 16:18:11

标签: matlab numeric numerical-methods numerical differentiation

我有以下任意数据:

t=[0 1 2 3 4 5 6 7 8 9 10 12 14];
C=[0 1 5 8 10 8 6 4 3.0 2.2 1.5 0.6 0];
area=trapz(t,C);
E=C./area;
F=cumtrapz(t,E);

绘制时,如下所示: enter image description here

现在,我想平滑这些情节:

t_int=[];
E_int=[];
F_int=[];

xmin=min(t);
xmax=max(t);
points=5000;
stepSize=(xmax-xmin)/points;

for i=xmin:stepSize:xmax
    t_int=[t_int i];
    E_int=[E_int interp1(t, E, i,'pchip')];
    F_int=[F_int interp1(t, F, i,'pchip')];
end

enter image description here

好的,所以我们在这里找到问题所在的实际部分。 实际上,我有一些F情节,我想获得相应的E图。 由于F曲线是E的积分,因此E是微分F曲线。

那么:

dy=diff(F_int);
dx=diff(t_int);
dydx = dy./dx;
plot(t_int(:,1:length(dydx)),dydx,t_int,E_int)
legend('E (calculated)','E (actual)')

enter image description here

为什么计算出的E曲线如此糟糕?

0 个答案:

没有答案