Question about utilizing FFT, convolution and LTI systems
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello all, I have a solution from an equation that is considered linear time invariant, such that i(t)*h(t)=o(t) where i,h,o, are the input, impulse response, and output respectively. If you take these to fourier domain, then you can get H(w)=o(w)/i(w), where H(w) is the frequency response. What I am trying to do is obtain h(t) and take the convolution of h(t) and i(t) to obtain o(t). Here are my steps.
step 1: i_t=data1 o_t=data2
step 2: iw=fft(iw) ow=fft(ow)
step 3: Hw=ow./iw
step 4: ht=ifft(Hw)
step 5: ot_new=conv(i_t,ht)
when i compare the new output to the original output they do not match. I tried using conv(i_t,ht,'same') but that also does not give me anything good. I know that my system satisfies the linear time invariant conditions. Am I doing something wrong? I've also tried playing around with the fft shift and ifftshift with no luck. Thanks!
0 commentaires
Réponse acceptée
Honglei Chen
le 6 Fév 2017
The FFT corresponds to the circular convolution rather than the linear convolution. I would do the following
N = numel(o_t);
ot_compare = ot_new(1:N);
ot_compare(1:N-1) = ot_compare(1:N-1)+ot_new(N+1:end);
Then you can see ot_compare and o_t are the same.
HTH
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Fourier Analysis and Filtering dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!