J'ai deux vecteurs de données spatiales (chacun d'environ 2000 éléments de longueur). L'un est une version convolution de l'autre. J'essaie de déterminer le noyau qui produirait une telle convolution. Je sais que je peux le faire en trouvant la transformée de Fourier inverse du rapport des transformées de Fourier des vecteurs de sortie et d'entrée. En effet, quand je fais cela, je reçois plus ou moins la forme que je m'attendais. Cependant, mon vecteur noyau a la même dimensionnalité que les deux vecteurs d'entrée alors qu'en réalité la convolution n'utilisait qu'environ un cinquième (~ 300-400) des points. Le fait que j'obtienne la bonne forme mais le mauvais nombre de points me fait penser que je n'utilise pas correctement les fonctions ifft et fft. Il semble que si je faisais vraiment la bonne chose, cela devrait se produire naturellement. En ce moment je fais simplement;Trouver le noyau de convolution dans matlab
FTInput = fft(in);
FtOutput = fft(out);
kernel = ifft(FtOutput./FTInput).
Est-ce correct et c'est à moi d'interpréter correctement le vecteur de sortie ou ai-je trop simplifié la tâche? Je suis sûr que c'est le dernier, je ne suis pas sûr où.
Merci
Vous pouvez demander sur dsp.stackexchange.com. C'est un problème d'identification du système. Il y a deux problèmes: l'approche que vous prenez ici modélise le système par un filtre FIR de la même longueur que les données, ce qui peut être ou ne pas être un bon modèle. Et si vos signaux d'entrée et de sortie sont corrompus par le bruit, disons en étant numérisés à partir de transducteurs analogiques, le bruit aura tendance à biaiser votre réponse. – mtrw