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;