MATLAB Answers

From numerical FFT to zero-pole diagram

조회 수: 3(최근 30일)
avihai
avihai 2021년 9월 5일
댓글: Star Strider 2021년 9월 6일
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.
  1. The pzmap and pzplot require a tf type input.
  2. 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!
  댓글 수: 1
avihai
avihai 2021년 9월 5일
It seems that pzmap and pzplot can't run with FRD models. Is there a way to convert it to tf?

댓글을 달려면 로그인하십시오.

채택된 답변

Star Strider
Star Strider 2021년 9월 5일
편집: Star Strider 2021년 9월 5일
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.
.
  댓글 수: 4
Star Strider
Star Strider 2021년 9월 6일
As always, my pleasure!
.

댓글을 달려면 로그인하십시오.

추가 답변(1개)

Paul
Paul 2021년 9월 5일
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
Paul
Paul 2021년 9월 5일
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.

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

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

Start Hunting!

Translated by