Question about utilizing FFT, convolution and LTI systems
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Nam Tran
el 6 de Feb. de 2017
Comentada: Nam Tran
el 7 de Feb. de 2017
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 comentarios
Respuesta aceptada
Honglei Chen
el 6 de Feb. de 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
Más respuestas (0)
Ver también
Categorías
Más información sobre Fourier Analysis and Filtering en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!