#include "ekf_example/matrix_vs.h" #include "ekf_example/ekf_obj.h" int main(){ int i; mat A = 0.99*eye(5); A(0.3) = 0.06; A(0,2) = 0.01; A(1,2) = 0.01; A(1,3) = -0.07; A(3,2) = 0.0001; RNG_randomize(); mat U=eye(5); for (int i=0; i<5;i++) { for (int j=i+1; j<5;j++) U(i,j)=2*randu(1)(0)-1; } mat Q = diag(vec(" 0.2000 0.3000 0.4000 0.5000 0.6")); vec R = vec(" 0.2000 0.3000"); vec D = randu(5)*0.9; vec xref = ones(5); int PSI[25]; int PSIU[25]={0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0}; int Uf[25]={0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0}; int Gf[25]={0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0}; int Df[5]={0,0,0,0,0}; int Dfold[5]={0,0,0,0,0}; int multip=1<<15; /////////// COPY imat Af=round_i(A*multip); mat_to_int(Af, PSI); mat_to_int(round_i(U*multip),Uf); vec_to_int(round_i(D*multip), Df); int Qf[25]; mat_to_int(round_i(Q*multip), Qf); int Rf[2]; vec_to_int(round_i(R*multip), Rf); ////////////// Test mmultAU mmultAU(PSI,Uf,PSIU,5,5); mat PhiU =A*U; /* cout << "A*U" << round_i(PhiU*multip) <=0;i--){ sigma = 0.0; for (j=0; j