Z-transform of time domain data
23 views (last 30 days)
Show older comments
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.
0 Comments
Answers (2)
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)
0 Comments
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
0 Comments
See Also
Categories
Find more on Transform Data in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!