2016-02-23 1 views
-1

Après avoir fait quelques recherches, je peux comprendre comment l'implémenter avec des fonctions temporelles. Cependant, je ne suis pas très sûr de savoir si je peux l'appliquer aux scénarios temporels non pertinents.Est-il faisable de déconnecter le capteur de temps non pertinent avec Kalman Filter et comment le coder?

Giving que nous avons une simple fonction y=a*x^2, où les deux y et x sont mesurés à un intervalle constant (par exemple 1 min/échantillon) et a est une constante. Cependant, les deux mesures y et x ont un bruit blanc. Plus spécifiquement, x et y sont deux variables mesurées indépendamment. Par exemple, x est le débit d'air dans un conduit et le y est la perte de charge à travers le conduit. Parce que le débit d'air varie en fonction de la variation de la vitesse du ventilateur, la chute de pression à travers le conduit varie également. La relation entre la perte de charge y et le débit x est y=a*x^2, cependant les deux mesures incorporent le bruit blanc. Est-ce possible d'utiliser Kalman Filter pour estimer un y plus précis? Les deux x et y sont enregistrés dans un intervalle de temps constant.

Voici mes questions:

  1. Est-il possible de mettre en œuvre Kalman Filter pour la lecture y réduction du bruit? Ou en un mot, avoir une meilleure estimation de y?

  2. Si cela est possible, comment le coder en R ou C?

P.S.

J'ai essayé d'appliquer Kalman Filter à une seule variable et cela fonctionne bien. Le résultat est comme ci-dessous. Je vais essayer la suggestion de Ben et regarder si je peux le faire fonctionner.

enter image description here

+0

Par "temps non significatif", voulez-vous dire que les vraies valeurs de x et y sont fixes? Ou sont-ils variables dans le temps? Si elles varient dans le temps, avez-vous une équation différentielle pour x ou y? –

+0

Le temps non significatif signifie y et x n'est pas une fonction du temps t. Un exemple très courant de l'application du filtre de Kalman est l'estimation de l'emplacement d'un objet en mouvement. Comme si une voiture se déplace à une vitesse constante. La distance (y) parcourue est une fonction de t qui peut être exprimée par y = v * t. –

+0

Hmmm ... Il me manque quelque chose. Vous dites que x et y sont sans importance dans le temps - mais dans votre question éditée, vous donnez un exemple d'un débit d'air et d'une chute de pression variant avec le temps. Donc, ils varient dans le temps et donc le temps oui? –

Répondre

1

Je pense que vous pouvez appliquer un filtre de Kalman comme des idées ici. Faites votre état a, avec la variance P_a. Votre mise à jour est juste F=[1], et votre mesure est juste H=[1] avec l'observation y/x^2. En d'autres termes, vous mesurez x et y et estimez a en résolvant a dans votre équation d'origine. Mettez à jour votre KF scalaire comme d'habitude. Approximativement R sera important. Si x et y ont tous les deux zéro bruit gaussien moyen, alors y/x^2 certainement pas, mais vous pouvez arriver à une approximation.

Maintenant que vous avez une estimation en cours d'exécution de a (qui est un aléatoire constante, de sorte Q=0 idéalement, mais peut-être Q=[tiny] pour éviter des problèmes numériques), vous pouvez l'utiliser pour obtenir un meilleur y. Vous avez y_meas et y_est=a*x_meas^2. Combinez ceux qui utilisent vos variances comme (R_y * a * x^2 + (P_a + R_x2) * y_meas)/(R_y + P_a + R_x2).Au fil du temps que P_a va à zéro (vous devenez certain de votre estimation de a) vous pouvez voir que vous finissez par combiner des informations de vos mesures x et y proportionnelles à votre confiance en elles individuellement. Au début, lorsque P_a est élevé, vous faites généralement confiance à la mesure directe de y_meas parce que vous ne connaissez pas la relation.

+0

Un grand merci pour votre contribution Ben. Je vais essayer votre suggestion quand j'ai un peu de temps libre. Je vous le ferai savoir si je le fais fonctionner. –