void loop (){
a[0] = 2.000;//(float)analogRead(angle_read);
float x_meas = 15.0000;
//a[0] = calib_apow(a[0],3)+calib_bpow(a[0],2)+calib_c*a[0]+calib_d;
// Kalman filter----------------------------------------
// X01[1] = F[1]X11[1]+F[2]X11[2]+B[1]a;
// X01[2] = F[3]X11[1]+F[4]X11[2]+B[1]a;
Matrix.Print((float)H,1,N,"H");
Matrix.Print((float)F,N,N,"F");
Matrix.Print((float)B,N,1,"B");
Matrix.Print((float)Q,N,N,"Q");
Matrix.Print((float)X11,N,1,"X11");
Matrix.Print((float)P11,N,N,"P11");
// X01------------------------------------------------------
Matrix.Multiply((float*)F,(float*)X11,N,N,1,(float*)temp2);
Matrix.Print((float*)temp2,N,N,"temp2");
Matrix.Multiply((float*)B,(float*)a,N,1,1,(float*)X01);
Matrix.Add((float*) temp2, (float*) X01, N, 1, (float*) X01);
//Matrix.Print((float*)temp2,N,N,"temp2");
Matrix.Print((float*)X01,N,1,"X01");
Matrix.Print((float*)temp2,N,N,"temp2");
// P01------------------------------------------------------
Matrix.Multiply((float*)P11,(float*)F,N,N,N,(float*)temp33);
//Matrix.Print((float*)temp22,N,N,"temp22");
//Matrix.Print((float*)temp2,N,N,"temp2");
Matrix.Multiply((float*)temp33,(float*)F1,N,N,N,(float*)P01);
//Matrix.Print((float*)P01,N,N,"P01");
Matrix.Add((float*) Q, (float*) P01, N, N, (float*) P01);
Matrix.Print((float*)P01,N,N,"P01");
float temp2[N] = {0,0};
float temp[1] = {0};
//K--------------------------------------------------------
Matrix.Print((float*)temp2,N,N,"temp2");
Matrix.Multiply((float*)H,(float*)P01,1,N,N,(float*)temp2);
Matrix.Print((float*)temp2,1,N,"P01H");
Matrix.Print((float)H,1,N,"H");
Matrix.Multiply((float*)temp2,(float*)H,1,2,1,(float*)temp);
Matrix.Print((float*)temp,1,1,"P01HH'");
Matrix.Add((float*) temp, (float*) R, 1, 1, (float*) temp);
Matrix.Print((float*)temp,1,1,"P01HH'+r");
Matrix.Invert((float*)temp,1);
Matrix.Print((float*)temp,1,1,"inv P01HH'+r");
Matrix.Multiply((float*)temp,(float*)H,1,1,N,(float*)temp2);
Matrix.Multiply((float*)P01,(float*)temp2,N,N,1,(float*)K);
Matrix.Print((float*)K,N,1,"K");
//X00-----------------------------------------------------
//float temp2[N] = {0,0};
temp[0]=0;
temp2[0]=0;
temp2[1]=0;
Matrix.Multiply((float*)H,(float*)X01,1,N,1,(float*)temp);
Matrix.Print((float*)temp,1,1,"temp");
temp[0]=x_meas-temp[0];
Matrix.Print((float*)temp,1,1,"temp");
Matrix.Print((float*)K,1,N,"K");
K2[0] = K[0]temp[0];
K2[1] = K[1]temp[0];
Matrix.Print((float)K2,1,N,"K'");
Matrix.Add((float) K2, (float*) X01, 1, N, (float*) X00);
Matrix.Print((float*)X00,N,1,"X00");
//P00----------------------------------------------------
temp[0]=0;
temp2[0]=0;
temp2[1]=0;
temp33[0][0] = 0;
temp33[0][1] = 0;
temp33[1][0] = 0;
temp33[1][1] = 0;
Matrix.Multiply((float*)K,(float*)H,N,1,N,(float*)temp33);
Matrix.Print((float*)temp33,N,N,"temp33");
Matrix.Print((float*)I,N,N,"I");
Matrix.Subtract((float*) I, (float*)temp33,N,N, (float*)temp33);
Matrix.Print((float*)temp33,N,N,"temp33");
Matrix.Multiply((float*)temp33,(float*)P01,N,N,N,(float*)P00);
Matrix.Print((float*)P00,N,N,"P00");
x_kalman = X00[0];
v_kalman = X00[1];
;
delay (1000000);
// -----------------------------------------------------
dt=millis()-t0;
}
the error occurs @ "x_kalman = X00[0];" . Here a[0] changes for some reason