Saludos amigos de este foro.
Necesito ayuda para reducir una expresión de código en ccs c. El caso es el siguiente:
Estoy leyendo 5 sensores a los cuales les aplico un filtro de kalman para ellos, la cosa es que mi código se vuelve un poco largo y me gustaría saber si se puede reducir con algún ciclo
For por ejemplo.
Nota: el código así como lo tengo funciona solo quiero reducirlo para no hacerlo tan largoLa expresión de código que quiero reducir es el siguiente:
float Xe[5];
// kalman process
Pc = P + varProcess;
G = Pc/(Pc + varVolt); // kalman gain
P = (1-G)*Pc;
Xp = Xe[0];
Zp = Xp;
Xe[0] = G*(((float) ADC_Read[0] * ADC_Coef[0])-Zp)+Xp; // valor de salida kalman
// kalman process
Pc = P + varProcess;
G = Pc/(Pc + varVolt);
P = (1-G)*Pc;
Xp = Xe[1];
Zp = Xp;
Xe[1] = G*(((float) ADC_Read[1] * ADC_Coef[1])-Zp)+Xp; // valor de salida kalman
// kalman process
Pc = P + varProcess;
G = Pc/(Pc + varVolt);
P = (1-G)*Pc;
Xp = Xe[2];
Zp = Xp;
Xe[2] = G*(((float) ADC_Read[2] * ADC_Coef[2])-Zp)+Xp; // valor de salida kalman
// kalman process
Pc = P + varProcess;
G = Pc/(Pc + varVolt);
P = (1-G)*Pc;
Xp = Xe[3];
Zp = Xp;
Xe[3] = G*(((float) ADC_Read[3] * ADC_Coef[3])-Zp)+Xp; // valor de salida kalman
// kalman process
Pc = P + varProcess;
G = Pc/(Pc + varVolt);
P = (1-G)*Pc;
Xp = Xe[4];
Zp = Xp;
Xe[4] = G*(((float) ADC_Read[4] * ADC_Coef[4])-Zp)+Xp; // valor de salida kalman
Lo e intentado así pero no funciona, ya que los valores de lectura están muy por debajo de los reales.
for(int i=0; i<5;i++)
{
// kalman process
Pc = P + varProcess;
G = Pc/(Pc + varVolt);
P = (1-G)*Pc;
Xp = Xe[i];
Zp = Xp;
}
Xe[0] = G*(((float) ADC_Read[0] * ADC_Coef[0])-Zp)+Xp; // valor de salida kalman
Xe[1] = G*(((float) ADC_Read[1] * ADC_Coef[1])-Zp)+Xp; // valor de salida kalman
Xe[2] = G*(((float) ADC_Read[2] * ADC_Coef[2])-Zp)+Xp; // valor de salida kalman
Xe[3] = G*(((float) ADC_Read[3] * ADC_Coef[3])-Zp)+Xp; // valor de salida kalman
Xe[4] = G*(((float) ADC_Read[4] * ADC_Coef[4])-Zp)+Xp; // valor de salida kalman
Alguna ayuda?.