2010-08-14 7 views
4

Je veux écrire un programme en Java qui utilise la transformation de Fourier rapide. Le programme lit les données toutes les 5 millisecondes secondes à partir des capteurs et est censé faire quelque chose avec les données toutes les 200 millisecondes sur la base des données des cinq dernières secondes.Calcul à la volée de la transformation de Fourier en Java

Y a-t-il une bonne bibliothèque en Java qui offre un moyen de faire la transformation de Fourier sans recalculer les cinq secondes à chaque fois?

+0

Si les données sont dynamiques, vous souhaitez que la transformée de Fourier soit recalculée. Vous pouvez laisser le programme attendre 195 millisecondes et commencer à collecter des données pour la transformée de Fourier, de sorte que cela puisse être fait au cours des 5 dernières millisecondes après 200 millisecondes. – MrFox

+0

Je ne suis pas un expert dans le domaine, mais d'après ma compréhension de la FFT, je ne pense pas qu'une approche progressive soit possible. Les FFT sont relativement rapides - savez-vous que recalculer la FFT sur une fenêtre glissante n'est pas assez rapide? – mdma

+3

N'ont-ils pas dit l'optimisation prématurée est la racine de tous les maux;) Peut-être que je devrais d'abord l'implémenter avec la FFT standard. – Christian

Répondre

3

Les problèmes en temps réel difficiles ne sont pas la bonne application de Java. Il y a trop de variables telles que Garbage collection et Threads qui ne sont pas garanties dans un intervalle donné pour rendre cela possible. Si assez proche est acceptable, cela fonctionnera. Les performances de votre logiciel en matière de synchronisation dépendent également du système d'exploitation et du matériel que vous utilisez et des autres programmes exécutés sur cette boîte.

Il existe un Real Time Java, qui possède une API spéciale pour les problèmes mentionnés ci-dessus. Vous n'indiquez pas que vous l'utilisez. C'est aussi un animal différent à beaucoup d'égards que Java simple.

+0

J'ai besoin de Java car il doit fonctionner sur Android et le programme a besoin de beaucoup d'appels d'API. – Christian

+0

@Christian - À quel point vos horaires sont-ils rapides? Il serait également utile si vous mettez un tag Android pour guider les réponses. –

+0

+1 @Romain Hippeau: Bonne réponse, et merci pour le heads-up sur RTJS – bguiz