From numerical FFT to zero-pole diagram
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!
Accepted Answer
More Answers (1)
Paul
on 5 Sep 2021
0 votes
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.
4 Comments
avihai
on 5 Sep 2021
Maybe I don't understand what you mean by zero-pole diagram. In the usage that I'm aware of one needs to know the zeros and poles first, and then the diagram is simply a plot of the pole and zero locations on the complex plane. But you seem to be saying that one can make a zero-pole diagram (from what?) and then extract what the poles and zeros are from that diagram. if that's the process you're talking about, I'm afraid I can't offer any more help without knowing more about what that diagram is.
Depending on the information you have about your system, you may be able to glean information about the poles and zeros, including the relative degree, based on the data that you have. Do you have any information about the system? For example, is it linear? Is it minimum phase? Etc.
Let fin be the FFT of the input an fout be the fft of the output.
h = fout./fin
is itself an estimate of the transfer function. You can make an frd object out of h and then make a Bode plot of h to garner some insight into the system, which might then help to estimate the transfer function and subsequently pull out the poles and zeros.
avihai
on 5 Sep 2021
Paul
on 5 Sep 2021
To be clear, I was only suggesting a Bode plot to help get an idea if the data you have is sufficient to identify the system and to get some information that would then inform the usage of a function like tfest.
Categories
Find more on Time and Frequency Domain Analysis 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!