2017-06-12 3 views
0

J'essaie de lire beaucoup de données provenant de mon Arduino, j'ai réglé mon tampon d'entrée à 500000 pour s'assurer qu'il peut gérer toutes ces données. Mes données sont 4 lectures de capteurs chaque échantillon à 250 Hz. Avec la taille de tampon par défaut (712), j'avais l'habitude d'avoir des accrocs quand je trace les lectures en temps réel et que les échantillons sont désordonnés ce qui rend l'intrigue complètement folle. J'ai résolu cela en augmentant la taille de la mémoire tampon à 50000. Mais maintenant, cela va fonctionner pendant un moment, mais si je veux l'exécuter pendant 15 minutes, je reçois le même comportement après 5 minutes, avec l'ajout que le tracé devient plus lent. J'ai un certain code de traitement avec le tracé en direct, mais il ne devrait pas être comme ça avec un tel bi tampon. Je veux savoir si la mémoire tampon contiendra toutes les données depuis le début jusqu'à ce qu'elle soit pleine ou effacera-t-elle les anciennes données quand elle sera pleine (sachant que je l'ai déjà sauvegardée dans un autre vecteur et que je l'ai tracée). Je ne comprends vraiment pas pourquoi cela continue à se produire.taille de tampon d'entrée série Matlab

Sincères salutations I.H

+0

"_J'ai un peu de code de traitement avec le tracé en direct mais ça ne devrait pas être comme ça avec un tel buffer_". La taille du tampon n'a pas d'impact sur la vitesse de votre traitement. Si votre traitement d'un bloc de données prend plus de temps que le bloc de données à arriver ... alors même un tampon infini n'arrêtera pas la désynchronisation progressive entre l'arrivée des données et leur affichage. – Hoki

Répondre

0

Lorsque le tampon est plein, une fois que vous obtenez de nouvelles données, il permet d'effacer les anciennes données. Le comportement que vous voyez est parce que votre traitement et votre tracé sont plus lents que le flux des données.

  • Essayez de vous assurer que vous optimisez vous traitement
  • Assurez-vous que pour le traçage se fait par « drawnow ». Comme ceci, vous êtes sûr que s'il y a quelque chose dans la file, il n'est pas exécuté
  • Essayez d'éviter d'enregistrer et de conserver toutes les données
  • Si le problème persiste, vous pouvez essayer de mettre en place une minuterie pour vous assurer que vous êtes cohérent avec la lecture de vos données
+0

Comment effacer des données lorsque le tampon est utilisé par le programme? Dans la documentation, le vidage du tampon efface toutes les données. Je suis sûr qu'il y aura toujours de nouvelles données que je n'ai pas encore lues quand je l'ai vidée, ce qui veut dire perdre des données ... J'utilise drawnow et je mets à jour les graphiques tous les 70 échantillons pour un traitement plus rapide. l'autre partie du traitement du signal peut prendre beaucoup de temps, mais c'est parce que je suis en train de faire du traitement intensif ... enfin, comment la minuterie devrait-elle déterminer si je suis cohérente ou pas? – Isra

+1

Si vous lisez un port série, une fois que vous avez lu, les données sont supprimées. Vous n'avez pas besoin d'effacer quoi que ce soit! – Laleh