필터 지우기
필터 지우기

Using ifft() to deconvolve signal and frequency response

조회 수: 2 (최근 30일)
2one
2one 2016년 4월 19일
편집: 2one 2016년 4월 19일
I have a measured time varying signal which is known to have a variable frequency response (I have freq vs. sensitivity data for the measurement device). I want to deconvolve using:
pt = ifft(fft(vt)./Mf)
where vt is the time varying signal and Mf is the frequency response.
I take the magnitude
abs(fft(vt))
and divide by the freq. vs. response curve Mf (interpolate to the same frequency range).
However if I set Mf=1 (for all values f=0 to X MHz) I don't get the original signal vt when I do the ifft.
My understanding is I need to perform the division (vt./Mf) on the fft magnitude but then use real/complex fft data for ifft to get the original signal but I'm unsure how to get this to work correctly.
  댓글 수: 2
Baltam
Baltam 2016년 4월 19일
Are you sure you didn't do anything wrong when setting Mf to 1?
x = 0:0.001:0.1-0.001;
y = sin(2*pi*50*x);
Mf = ones(size(y));
plot(x,y,'o'), hold all, plot(x,ifft(fft(y)./Mf),'-')
This seems to work fine with me.
2one
2one 2016년 4월 19일
편집: 2one 2016년 4월 19일
I'm not sure this is exactly the output I require. I need to divide fft(y)./Mf at each point which must have the same frequency value that is if I plotted
plot(f1,fft(y)); hold all; plot(f2,Mf); hold all; plot(f2,fft(y)./Mf)
I first would need to interpolate f1 so it is the same as f2. But I think I need to use abs(fft(y)) rather than fft(y) in the division?

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Transforms에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by