It seems that pzmap and pzplot can't run with FRD models. Is there a way to convert it to tf?

3 views (last 30 days)

Show older comments

Hi,

I have a simulink simulation that outputs time-domain signal to matlab (the input is also time-domain).

I made FFT on both input and output signal and have double complex vectors.

Now I'd like to make a zero-pole diagram from what I have but I have some challenges and I don't know how to continue.

- The pzmap and pzplot require a tf type input.
- my vectors are in a numerical frequency-domain and I have to convert them to a sort of symbolic z or s domain.

I'll be happy to know how should I proceed in order to succeed to do #1. Maybe #2 isn't relevant and there is a straightforward way?

Thanks!

Star Strider
on 5 Sep 2021

Edited: Star Strider
on 5 Sep 2021

What you can do depends on what the data are, one requirement being that to have complex vectors in the frequency domain.

To get an estimate of the pole and zero locations on the imaginary axis, plot the imaginary component of the fft as a function of frequency. The frequencies at the extremes () are the pole locations, and the zeros are the zero-crossings.

That is as close as it is possible get with only a fft result, although with the System Identification Toolbox, use the fft result with the idfrd function and go from there to identify the system. Then use the pzmap function and others to analyse the system.

EDIT — (5 Sep 2021 at 15:10)

It might be possible to convert the frequency domain data back to the time domain, then invert it. This is straightforward if the data are a two-sided Fourier transform, and only requires a bit more effort if it is a one-siced Fourier transform.

.

Paul
on 5 Sep 2021

Poles and zeros are based on the transfer function, which relates the output to the input. So in addition to the output signal, you'll also need to use the input signal. And you need to make sure that the frequency content of the input covers the frequencies that are relevant to your system, which you'll need to have some idea about.

One option is to try a single run with a Chirp Signal as the input, which might be difficult to use if you have low frequency poles or zeros.

Another approach would be to generate a single signal that is a series of sine waves.

Or you an run a loop over frequency stimulating the model with a single sine wave.

Once you have the input and output signals, then you can try ot use a function like tfest(), to estimate the transfer function, from which you can extract the poles and zeros.

Paul
on 5 Sep 2021

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

Start Hunting!