Question about utilizing FFT, convolution and LTI systems

조회 수: 9 (최근 30일)
Nam Tran
Nam Tran 2017년 2월 6일
댓글: Nam Tran 2017년 2월 7일
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!

채택된 답변

Honglei Chen
Honglei Chen 2017년 2월 6일
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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Fourier Analysis and Filtering에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by