Da qualche parte nella catena tra l'ingresso analogico della scheda audio e i campioni che stai pianificando, c'è sicuramente un filtro passa-basso. Probabilmente esiste un filtro anti-aliasing analogico prima dell'ADC; inoltre, ci sono probabilmente uno o più filtri passa-basso applicati durante i processi di ricampionamento sulla scheda o nello stack del driver audio del sistema operativo (risultante in un flusso di campioni alla frequenza di campionamento richiesta).
Come hai notato, i filtri passa-basso hanno spesso una risposta all'impulso che ricorda una funzione . Quando ecciti un sistema lineare con un impulso, l'output risultante è solo una copia della risposta all'impulso del sistema (a causa del teorema di convoluzione ). Quindi, è prevedibile che il segnale osservato assomigli ad una funzione . Non sembra che questo ti abbia sorpreso.sincsinc
Tuttavia : non hai osservato un comportamento non causale. Se lo hai fatto, dovresti correre immediatamente al tuo ufficio brevetti locale. I sistemi non causali non sono realizzabili nel mondo reale. Ricorda la definizione: affinché la risposta di un sistema sia non causale, il suo output deve condurre l'input nel tempo. Detto in modo diverso, il filtro inizierà a fornire la sua risposta all'input prima di inserire l'input. Ovviamente, ciò non accadrà.
Quindi cosa succede con il pre-squillo? Semplice: il grande picco nel mezzo corrisponde al centro della risposta all'impulso del filtro. Tuttavia, quel picco non corrisponde a , il momento in cui l'impulso è stato inserito nel filtro. Considera il seguente esempio MATLAB:t = 0
% generate a 250th order lowpass filter
b = fir1(250, 0.5);
% plot its impulse response
plot(0:250, b); grid on;
Il diagramma risultante è simile al seguente:
Come puoi vedere, il picco nel grafico non è nell'indice di campionamento zero. Il filtro ha un ritardo complessivo di 125 campioni (in effetti, tutti i filtri FIR in fase lineare hanno un ritardo di massa di campioni, dove è l'ordine del filtro), e il pre e il post-squillo sono centrato su quel ritardo. Quindi, quando si inserisce l'impulso, inizialmente si vede una risposta molto scarsa. Mentre l'impulso si fa strada attraverso i colpetti del filtro, lo squillo sale fino a un picco nel centro della risposta all'impulso, quindi ritorna a zero.N2N
Il takeaway: non c'è un comportamento non causale nell'esempio che hai dato. È possibile simulare in pratica i filtri non causali aggiungendo un ritardo sufficiente, simile al ritardo mostrato nella risposta all'impulso del filtro passa basso sopra.