Z-transform of time domain data

23 views (last 30 days)
Mate
Mate on 8 Apr 2012
Hi!
I have a vector x which consist of an impulse response to an unknown system, and a transfer function A in terms of its coefficients. What I now want to do is to calculate IDFT(X(z)/A(z)), ie. evaluate the transfer function X(z)/A(z) at some discrete points z.
I have already looked at FREQZ and FILTER, but those functions assume that the coefficients of the transfer functions are known. INVFREQS is maybe a possible solution to get X(z) but the problem is that my impulse response x is in time domain.
Any help appreciated.

Answers (2)

Wayne King
Wayne King on 8 Apr 2012
If you have a finite-length vector which is the impulse response of a discrete time system, then you have an FIR filter. The values of the impulse response vector are the coefficients of the finite-order polynomial in z^{-1} that is the z-transform, so you can just do
freqz(B,1)
where B is your impulse response vector.
For example, assume you have a simple 10-point moving average FIR filter where the impulse response is
1/10*ones(10,1)
but
B = 1/10*ones(10,1);
impz(B,1)
It's trivial. Unless you really don't have the impulse response (or you have a truncated impulse response, which is really IIR)

Rajiv Singh
Rajiv Singh on 9 Apr 2012
Try this:
data = iddata(x,[],Ts) % ts:= sampling time
Filter = armax(data, [na nc]) % na, nc are filter design parameters
Value = evalfr(Filter, z) % evaluate response at complex number z
Values = freqresp(Filter, w) % evaluate frequency response at frequencies w

Community Treasure Hunt

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

Start Hunting!