Il y a quelque temps, j'essayais différentes façons de dessiner des formes d'onde numériques , et l'une des choses que j'ai essayées était, au lieu de la silhouette standard de l'enveloppe d'amplitude, de l'afficher plus comme un oscilloscope. Voici à quoi ressemble une onde sinusoïdale et carrée sur une lunette:
La façon naïve de le faire est:
- Divisez le fichier audio en un morceau par pixel horizontal dans l'image de sortie
- Calculer l'histogramme des amplitudes d'échantillonnage pour chaque bloc
- Tracer l'histogramme par luminosité sous forme de colonne de pixels
Cela produit quelque chose comme ceci:
Cela fonctionne bien s'il y a beaucoup d'échantillons par morceau et que la fréquence du signal n'est pas liée à la fréquence d'échantillonnage, mais pas autrement. Si la fréquence du signal est un sous-multiple exact de la fréquence d'échantillonnage, par exemple, les échantillons se produiront toujours exactement aux mêmes amplitudes dans chaque cycle et l'histogramme ne sera que de quelques points, même si le signal reconstruit réel existe entre ces points. Cette impulsion sinusoïdale devrait être aussi lisse que ci-dessus à gauche, mais ce n'est pas parce qu'elle est exactement de 1 kHz et que les échantillons se produisent toujours autour des mêmes points:
J'ai essayé le suréchantillonnage pour augmenter le nombre de points, mais cela ne résout pas le problème, aide simplement à lisser les choses dans certains cas.
Donc ce que j'aimerais vraiment, c'est un moyen de calculer le vrai PDF (probabilité vs amplitude) du signal reconstruit continu à partir de ses échantillons numériques (amplitude vs temps). Je ne sais pas quel algorithme utiliser pour cela. En général, le PDF d'une fonction est la dérivée de sa fonction inverse .
PDF de sin (x):
Mais je ne sais pas comment calculer cela pour des vagues où l'inverse est une fonction à valeurs multiples , ni comment le faire rapidement. Le diviser en branches et calculer l'inverse de chacune, prendre les dérivées et les additionner toutes ensemble? Mais c'est assez compliqué et il y a probablement un moyen plus simple.
Ce "PDF de données interpolées" est également applicable à une tentative que j'ai faite de faire une estimation de la densité du noyau d'une trace GPS. Il aurait dû être en forme d'anneau, mais parce qu'il ne regardait que les échantillons et ne tenait pas compte des points interpolés entre les échantillons, le KDE ressemblait plus à une bosse qu'à un anneau. Si les échantillons sont tout ce que nous savons, alors c'est le mieux que nous puissions faire. Mais les échantillons ne sont pas tout ce que nous savons. Nous savons également qu'il existe un chemin entre les échantillons. Pour le GPS, il n'y a pas de reconstruction parfaite de Nyquist comme pour le son à bande limitée, mais l'idée de base s'applique toujours, avec quelques suppositions dans la fonction d'interpolation.