Cosa sta facendo questo sinc nella mia uscita filtro HP trasformata in HP?


10

Sto cercando di filtrare un segnale HP filtrando LP e sottraendo l'output dal filtro originale. Per ottenere il segnale filtrato LP, ho filtrato all'indietro usando un filtro Butterworth del terzo ordine per un segnale di 16.000 campioni. La frequenza di taglio era di 0,5 Hz a 250 Hz. Nessuna finestra è stata utilizzata.

Nel primo 85% circa dei campioni, l'output di questo metodo sembra sovrapporsi completamente al segnale effettivamente filtrato da HP. Tuttavia, alla fine dell'output, c'è un fenomeno abbastanza sincero.

  • Cosa lo causa?
  • Cosa potrei cambiare per rendere possibile questo metodo?

Ecco i due segnali sovrapposti. Quello blu è filtrato HP e quello rosso ottenuto per sottrazione.

Segnali HP e orig-LP

Ecco la differenza assoluta per campione. Non sono mai esattamente uguali; la differenza minima è 8e-12. L'87% dei valori è inferiore a 0,01.

differenza tra i due metodi

(Se c'è un modo migliore per ottenere un filtro HP da un filtro LP , sarei felice di impararlo.)H(z)


Puoi includere il codice MATLAB che stai usando per generare i grafici? I dati non sono importanti; potresti semplicemente simularlo con campioni casuali invece, se necessario.
Jason R,

Risposte:


0

Methinks @ hotpaw2 è sulla buona strada. La mia ipotesi è che filtfilt non stia gestendo le condizioni iniziali per il filtro inverso nel modo giusto. Sembra un problema davvero difficile - non credo di poter criticare Mathworks per aver sbagliato ...

La correzione mi sembra abbastanza semplice: azzerare la fine del segnale fino a quando il sinc non scompare, ed eliminare il riempimento (ora diverso da zero!) Dopo il filtro.


0

Stai facendo un filtro indietro per uno e un filtro solo avanti per l'altro. Pertanto, i due filtri si comporteranno in modo diverso su uno o entrambi i bordi.

Se il segnale è fortemente fisso e esattamente periodico nella lunghezza della finestra dei dati, è possibile provare a avvolgere i dati in modo circolare e avviare i filtri in base alla lunghezza della loro risposta all'impulso.


Scusa se non sono stato abbastanza chiaro. Il segnale che sto confrontando con (blu) è anche filtrato in avanti (indietro) ( filtfilte butter(3,0.5/250,high)). Il segnale proviene da un elettrocardiogramma che non posso pretendere di essere periodico.
Andreas,

Sto fraintendendo qualcosa? Non riesco a capire il voto dato che il primo paragrafo è chiaramente sbagliato.
Andreas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.