y_imp = 0.5 +1.2*x_imp + 0.54*x_imp.^2 + 0.02*randn(size(x_imp));
points_curve_fit = 5:2:9;
for nwindow = points_curve_fit
for k = 1: 1 : rows -nwindow
x = x_imp(k:k+nwindow-1,1);
y = y_imp(k:k+nwindow-1,1);
x_mat = [ones(nwindow,1) var1 var2];
marker = floor(nwindow/2) + 1;
err(1:marker,1) =error(1:marker,1);
err(k+marker-1) =error(marker);
pos_n = (a0+a1*var1+a2*var2);
markar = floor(nwindow/2) + 1;
pos(1:markar,1) = pos_n(1:markar,1);
pos(k+markar-1) = pos_n(markar);
acc_n = gradient(velo,dx);
str_pos{ci} = ['Pos Curve Fit' num2str(points_curve_fit(ci)) ' points'];
str_velo{ci} = ['Velo Curve Fit' num2str(points_curve_fit(ci)) ' points'];
str_acc{ci} = ['Accel Curve Fit' num2str(points_curve_fit(ci)) ' points'];
str_err{ci} = ['error ' num2str(points_curve_fit(ci)) ' points'];
fig1 = figure('name', sprintf('%d points curve fit ', points_curve_fit),'NumberTitle','off');
plot(tim_pos,y_raw,'or',tim_pos,pos_all,'-',tim_pos,velo_all,'--',tim_pos,acc_n_all,'*'); grid on;
legend([{' raw data'} str_pos str_velo str_acc]);
fig2 = figure('name', sprintf('%d points error ', points_curve_fit),'NumberTitle','off');
plot(tim_pos,err_all,'--');grid on;