# Obtain exact frequency from impulse response

Discussion in 'MATLAB' started by Jyh-Cheng Jeng, Aug 11, 2008.

1. ### Jyh-Cheng JengGuest

When I compute the frequency response from impulse response
by fft, does the accuracy of frequency response depend on
the sampling interval of impulse response?

If yes, how to improve the accaracy when I cannot reduce
the sampling interval of impulse response?

i.e.
h is the impulse response of G(s)
hatG = fft(h)
how to make hatG approach G(jw) as close as possible?

Jyh-Cheng Jeng, Aug 11, 2008

2. ### Rune AllnorGuest

The FFT is exact, to within numerical precision. If you compute
the spectrum of a sampled waveform, the result of those computations
must necessarily depend on the sampling interval.
It depends on where G(jw) came from in the first place.

If G(jw) is the spectrum of an infinite-length continuous-
time waveform, there is nothing you can do, inasmuch as
G[k]=fft(g[n]) is a sampled waveform and G(jw) is not.

If G(jw) is the spectrum of a discrete-time waveform,
you can let G[k] approach G(jw) by including more
samples in g[n].

Rune

Rune Allnor, Aug 11, 2008

3. ### Greg HeathGuest

t = 0:dt:T-dt, T = N*dt

f = 0:df:Fs-df, Fs = N*df

the frequency resolution is df = 1/T
the frequency extent is Fs = 1/dt

If you cannot reduce dt to increase the frequency extent,
can you increase N, to improve frequency resolution?
Decrease dt and increase T.

Hope this helps.

Greg

Greg Heath, Aug 11, 2008
4. ### jcjengGuest

If I cannot decrease dt, what can I do ??
Also, I find the frequency response still not accurate when I use a
large T.
Increasing T seems only improve frequency resolution but not the
accuracy.
Thanks.

jcjeng, Aug 13, 2008
5. ### jcjengGuest

G(jw) comes from a continuous stable transfer function G(s) (e.g. 1/(s
+1))
The impulse response of G(s) is of finite length.
I cannot reduce the sampling interval.
How can I make the FFT of the impulse response approach G(jw)?
Thanks.

JC

jcjeng, Aug 13, 2008
6. ### Rune AllnorGuest

First of all, you are mixing apples and oranges. The original
spectrum G(s) is the Laplace transform of a continuous-time
signal (conceptually) of infinite duration, whereas the FFT
works on finite amounts of discrete-time data.

So the FFT can not be used to compute G(s) directly.

You can use several methods to find a discrete-time (DT) system
which *approximates* the continuous-time (CT) system, though.

One such method would be to sample the impulse response of
the CT system. The FFT of the sampled impulse response
would look similar to (but not equal to) the original G(s).
Look up "filter design by the impulse invariance method"
in a text on Digital Signal Processing to see the details.

Another method to design a DT filter from a CT prototype
is to transform the spectrum in a systematic way from
CT domain to DT domain. This is known as "Bilinear
Transform", BLT. Again, the DT result is *similar*,
not equal, to the CT prototype. Look up the details
in a book on DSP.

Rune

Rune Allnor, Aug 13, 2008