Question about utilizing FFT, convolution and LTI systems
4 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
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 Center および File Exchange で Fourier Analysis and Filtering についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!