Qualche tempo fa stavo provando diversi modi per disegnare forme d'onda digitali e una delle cose che ho provato è stata, invece della sagoma standard dell'inviluppo dell'ampiezza, mostrarla più come un oscilloscopio. Ecco come si presenta un'onda sinusoidale e quadrata su un ambito:
Il modo ingenuo per farlo è:
- Dividi il file audio in un blocco per pixel orizzontale nell'immagine di output
- Calcola l'istogramma delle ampiezze di campionamento per ogni blocco
- Traccia l'istogramma in base alla luminosità come una colonna di pixel
Produce qualcosa del genere:
Funziona bene se ci sono molti campioni per blocco e la frequenza del segnale non è correlata alla frequenza di campionamento, ma non altrimenti. Se la frequenza del segnale è un sottomultiplo esatto della frequenza di campionamento, ad esempio, i campioni si verificheranno sempre esattamente alle stesse ampiezze in ciascun ciclo e l'istogramma sarà solo di alcuni punti, anche se il segnale ricostruito effettivo esiste tra questi punti. Questo impulso sinusoidale dovrebbe essere regolare come quello in alto a sinistra, ma non è perché è esattamente 1 kHz e i campioni si verificano sempre attorno agli stessi punti:
Ho provato il upsampling per aumentare il numero di punti, ma non risolve il problema, in alcuni casi aiuta solo a chiarire le cose.
Quindi quello che mi piacerebbe davvero è un modo per calcolare il vero PDF (probabilità vs ampiezza) del segnale continuo ricostruito dai suoi campioni digitali (ampiezza vs tempo). Non so quale algoritmo usare per questo. In generale, il PDF di una funzione è la derivata della sua funzione inversa .
PDF di sin (x):
Ma non so come calcolare questo per le onde in cui l'inverso è una funzione multivalore , o come farlo velocemente. Suddividilo in rami e calcola l'inverso di ciascuno, prendi i derivati e sommali tutti insieme? Ma è piuttosto complicato e probabilmente c'è un modo più semplice.
Questo "PDF di dati interpolati" si applica anche al tentativo che ho fatto di fare una stima della densità del kernel di una traccia GPS. Avrebbe dovuto essere a forma di anello, ma poiché stava solo guardando i campioni e non considerando i punti interpolati tra i campioni, il KDE sembrava più una gobba che un anello. Se i campioni sono tutto ciò che sappiamo, allora questo è il meglio che possiamo fare. Ma i campioni non sono tutto ciò che sappiamo. Sappiamo anche che esiste un percorso tra i campioni. Per il GPS, non esiste una ricostruzione Nyquist perfetta come per l'audio bandlimited, ma l'idea di base si applica ancora, con alcune congetture nella funzione di interpolazione.