sans aucune interaction utilisateur, comment un programme identifierait-il quel type de forme d'onde est présent dans un enregistrement d'un ADC? p>
Pour le bien de cette question: triangle, carré, sine, demi-sinu forme ou des ondes de scie de fréquence constante. Le niveau et la fréquence sont arbitraires et ils auront du bruit, de petites quantités de distorsion et d'autres imperfections. P>
p >
Je vais aussi proposer quelques idées (naïves), et vous pouvez les voter vers le haut ou le bas. P>
7 Réponses :
Effectuer une autocorrélation pour trouver la fréquence fondamentale, mesurer le niveau RMS, trouver le premier passage à zéro, puis essayez de soustraire des formes d'onde communes à cette fréquence, de la phase et du niveau. Selon lequel cela annule les meilleurs (et plus que certains seuils) gagne. P>
Je pense que c'est l'approche la plus pratique, en supposant également varier la phase des formes d'onde de comparaison.
Vous pouvez déterminer la phase en trouvant un passage à zéro d'abord pour que vous ne perdiez pas de temps en déplaçant les vagues à toutes les phases possibles.
Faites une FFT, trouvez les pics impairs et païens et comparez la vitesse à laquelle ils diminuent à une bibliothèque de formes d'onde courantes. Ratios de pointe. P>
Cette méthode semble plus robuste que de travailler dans le domaine temporel, puisque vous pouvez toujours identifier les vagues qui avaient été passées par dépasse et filtrage.
Vous voulez certainement commencer par prendre une autocorrélation pour trouver le fondamental. p>
avec cela, prenez une période (environ) de la forme d'onde. P>
prenez maintenant un DFT de ce signal et compense immédiatement le décalage de la phase de la première corbeille (la première corbeille étant le fondamental, votre tâche sera plus simple si toutes les phases sont relatives). Normalise maintenant toutes les bacs afin que le fondamental ait un gain d'unité. P>
Comparez et contrastez maintenant le reste des bacs (représentant les harmoniques) contre un ensemble de wavehavases pré-stockés que vous souhaitez tester. Acceptez le plus proche et rejette dans l'ensemble s'il ne répondait pas à un seuil de précision déterminé par des mesures du bruitfloor. P>
Vous devriez également garder une trace de ce changement de phase, cependant, pour identifier différentes polarités de vagues, non?
En effet. Ce sera beaucoup plus facile aussi si vous avez indemnisé la phase du fondamental.
Il serait préférable de prendre la FFT de plusieurs périodes de la vague, en ce qui concerne le rejet de bruit.
Sinon, si vous pouvez les aligner, vous feriez mieux de résumer plusieurs périodes de la vague (et de la moyenne), puis de la FFT.
armer vous-même avec plus d'informations ... P>
Je suppose que vous savez déjà que vous savez déjà qu'une onde sinusoïdale théoriquement parfaite n'a pas de partielles harmoniques (c'est-à-dire seulement une base fondamentale) ... mais depuis que vous traversez un ADC, vous pouvez jeter l'idée d'une vague de sinus théoriquement parfaite sur la Fenêtre ... Vous devez vous battre contre l'aliasing et déterminer ce que sont des partiels "réels" et quels sont les artefacts ... bonne chance. p>
Cette réponse ne présume aucun bruit et qu'il s'agit d'un simple exercice académique. P>
Dans le domaine temporel, prenez l'échantillon par exemple de différence de forme d'onde. Histogramme les résultats. Si la distribution a un pics (mode) fortement défini à zéro, il s'agit d'une onde carrée. Si la distribution a un pic fortement défini à une valeur positive, c'est une telte de scie. Si la distribution a deux pics sélectionnés, un négatif et un positif, c'est un triangle. Si la distribution est large et est culminée de chaque côté, c'est une onde sinusoïdale. P>
Je pense que toutes ces réponses jusqu'à présent sont assez mauvaises (y compris mes propres ...) Après avoir pensé le problème à travers un peu plus, je suggère ce qui suit: p>
1) Prenez un échantillon de 1 seconde du signal d'entrée (n'a pas besoin d'être si gros, mais cela simplifie quelques choses) p>
2) sur la seconde entière, comptez les passages à zéro. À ce stade, vous avez le CPS (cycles par seconde) et connais la fréquence de l'oscillateur. (au cas où vous voulez savoir) p>
3) Maintenant, prenez maintenant un segment plus petit de l'échantillon avec: prenez précisément 7 passages à niveau zéro. (Donc, votre tampon de travail devrait maintenant, s'il est visualisé, ressemblez à l'une des représentations graphiques que vous avez publiées avec la question initiale.) Utilisez ce petit tampon de travail pour effectuer les tests suivants. (Normaliser le tampon de travail à ce stade pourrait rendre la vie plus facile) P>
4) Test d'une onde carrée: les traversées zéro pour une onde carrée sont toujours très grandes différences, recherchez un grand delta de signal suivi de peu ou pas de mouvement tant que le passage à zéro suivant. P>
5) Test de l'onde de scie: similaire à une onde carrée, mais un grand delta signal sera suivi d'un delta de signal constant linéaire. P>
6) Test de Triangle-Wave: Deltas de signal constant linéaire (petit). Trouvez les pics, divisez par la distance entre eux et calculez à quoi ressemblera l'onde de triangle (idéalement), testez maintenant le signal réel pour la déviance. Définissez un seuil de tolérance de déviance et vous pouvez déterminer si vous regardez un triangle ou un sinus (ou quelque chose de parabolique). p>
En supposant que cela ressemble à de telles données audio réelles, compter zéro-passages ne fonctionne pas très bien. Comme l'a souligné Dave Gamble, l'autocorrélation est le meilleur moyen de déterminer la fréquence fondamentale du signal audio.
Sauf si le signal n'est vraiment bruyant, compter zéro passage devraient fonctionner. Il serait préférable de mesurer la distance entre les passages à niveau zéro, jeter toutes les valeurs aberrantes et la moyenne, cependant.
Trouvez d'abord la fréquence de base et la phase. Vous pouvez le faire avec FFT. Normaliser l'échantillon. Sous trayez chaque échantillon avec l'échantillon de la forme d'onde que vous souhaitez tester (même fréquence et même phase). Square Le résultat Ajoutez-le et divisez-le par le nombre d'échantillons. Le plus petit nombre est la forme d'onde que vous recherchez. P>
Pouvez-vous, avec confiance, supposez-vous que l'entrée est un signal monophonique? (c'est-à-dire une seule note jouée par un seul insértrument?)
Oui. Je n'ai pas d'application particulière à l'esprit, mais j'imagine des vagues périodiques continues d'une seule fréquence.