Come trovare il kernel di convoluzione nel dominio della frequenza?


12

Ho due vettori di dati spaziali (ciascuno lungo circa 2000 elementi). Uno è una versione complicata dell'altro. Sto cercando di determinare il kernel che produrrebbe una tale convoluzione. So che posso farlo trovando la trasformata inversa di Fourier del rapporto tra le trasformate di Fourier dei vettori di uscita e di ingresso. In effetti, quando lo faccio ottengo più o meno la forma che mi aspettavo. Tuttavia, il mio vettore del kernel ha la stessa dimensionalità dei due vettori di input quando in realtà la convoluzione utilizzava solo circa un quinto (~ 300-400) dei punti. Il fatto che sto ottenendo la forma giusta ma il numero errato di punti mi fa pensare che non sto usando le funzioni ifft e fft in modo corretto. Sembra che se stessi davvero facendo la cosa giusta, questo dovrebbe accadere naturalmente. Al momento lo sto semplicemente facendo;

FTInput = fft(in); 
FtOutput = fft(out);
kernel = ifft(FtOutput./FTInput).

È corretto e spetta a me interpretare correttamente il vettore di output o ho semplificato troppo l'attività? Sono sicuro che è quest'ultimo, non sono sicuro di dove.


2
I tuoi dati di input sono azzerati su entrambi i lati per la lunghezza del kernel di convoluzione? Dovrebbe essere, altrimenti perdi informazioni lì, che potrebbe essere la ragione di questi artefatti.
lasciato il

Risposte:


5

Se è presente del rumore nel segnale, la semplice divisione del dominio di Fourier causerà numerosi errori nel risultato. Alcuni modi per evitarlo sono usando il cosiddetto FFT a doppio canale ( Parte 1 e Parte 2 ). Posso anche suggerire la deconvoluzione tramite filtri adattativi, in particolare i filtri LMS o NLMS ([Normalized] Least Mean Squares) sono facili da capire, non sono estremamente costosi in termini di cicli della CPU nel caso in cui i segnali siano lunghi. I filtri adattivi LMS sono molto resistenti al rumore.


Ciò ha funzionato a meraviglia grazie e ho scoperto un nuovo tipo di cose che non sapevo esistessero.
Bowler

@Phonon funzionano quei link? A cosa serve esattamente iscriversi?
Spacey,

@Mohammad: serve per accedere agli articoli e ai libri di recensioni tecniche di Brüel & Kjær. L'iscrizione è gratuita e dà accesso a molti buoni articoli.
Thor,
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.