mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-21 09:23:35 +08:00
59 lines
1.5 KiB
C
Executable File
59 lines
1.5 KiB
C
Executable File
/*
|
|
* kalman_dlqe1.c
|
|
*
|
|
* Code generation for function 'kalman_dlqe1'
|
|
*
|
|
* C source code generated on: Wed Feb 13 20:34:32 2013
|
|
*
|
|
*/
|
|
|
|
/* Include files */
|
|
#include "rt_nonfinite.h"
|
|
#include "kalman_dlqe1.h"
|
|
|
|
/* Type Definitions */
|
|
|
|
/* Named Constants */
|
|
|
|
/* Variable Declarations */
|
|
|
|
/* Variable Definitions */
|
|
|
|
/* Function Declarations */
|
|
|
|
/* Function Definitions */
|
|
void kalman_dlqe1(const real32_T A[9], const real32_T C[3], const real32_T K[3],
|
|
const real32_T x_aposteriori_k[3], real32_T z, real32_T
|
|
x_aposteriori[3])
|
|
{
|
|
printf("[dlqe input]: x_aposteriori_k %12.8f\t %12.8f\t %12.8f\t z:%12.8f\n", (double)(x_aposteriori_k[0]), (double)(x_aposteriori_k[1]), (double)(x_aposteriori_k[2]), (double)z);
|
|
printf("[dlqe input]: C[0]: %12.8f\tC[1] %12.8f\tC[2] %12.8f\n", (double)(C[0]), (double)(C[1]), (double)(C[2]));
|
|
real32_T y;
|
|
int32_T i0;
|
|
real32_T b_y[3];
|
|
int32_T i1;
|
|
real32_T f0;
|
|
y = 0.0F;
|
|
for (i0 = 0; i0 < 3; i0++) {
|
|
b_y[i0] = 0.0F;
|
|
for (i1 = 0; i1 < 3; i1++) {
|
|
b_y[i0] += C[i1] * A[i1 + 3 * i0];
|
|
}
|
|
|
|
y += b_y[i0] * x_aposteriori_k[i0];
|
|
}
|
|
|
|
y = z - y;
|
|
for (i0 = 0; i0 < 3; i0++) {
|
|
f0 = 0.0F;
|
|
for (i1 = 0; i1 < 3; i1++) {
|
|
f0 += A[i0 + 3 * i1] * x_aposteriori_k[i1];
|
|
}
|
|
|
|
x_aposteriori[i0] = f0 + K[i0] * y;
|
|
}
|
|
//printf("[dlqe output]: x_aposteriori %12.8f\t %12.8f\t %12.8f\n", (double)(x_aposteriori[0]), (double)(x_aposteriori[1]), (double)(x_aposteriori[2]));
|
|
}
|
|
|
|
/* End of code generation (kalman_dlqe1.c) */
|