Z-transform of time domain data
Afficher commentaires plus anciens
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.
Réponses (2)
Wayne King
le 8 Avr 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
le 9 Avr 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
Catégories
En savoir plus sur Transform Data dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!