How do I call "frd" for discrete time?

1 visualizzazione (ultimi 30 giorni)
Mark
Mark il 20 Nov 2014
Commentato: Mark il 21 Nov 2014
Following along this example for mu analysis: Robust Performance Analysis
I have M, and blk from
[M,NDelta,blk] = lftdata(ClosedLoop);
Making a frequency vector and defining my discrete time step as:
freq=logspace(-1,2,100);
dt = 0.05;
I now want to call frd as:
M_g = frd(M,freq,dt);
but get the error: "The frequency units must be specified as one of the strings 'rad/TimeUnit', 'cycles/TimeUnit', 'rad/s', 'Hz', 'kHz', 'MHz', 'GHz', or 'rpm'."
I have no idea how to specify these units though... Help?!?

Risposte (1)

Sebastian Castro
Sebastian Castro il 20 Nov 2014
Modificato: Sebastian Castro il 20 Nov 2014
Hi Mark,
I think you may need to discretize the system M_g first using c2d before using the frd command.
The following commands worked for me:
M_disc = c2d(M,0.05);
M_g = frd(M_disc,freq,'rad/s');
After displaying M_g, at the very end I get the following:
Sample time: 0.05 seconds
Discrete-time frequency response.
Best,
Sebastian
  1 Commento
Mark
Mark il 21 Nov 2014
Well, my system is already in discrete time with a sample time of 0.05 before I call lftdata, so the use of c2d is unnecessary. Unfortunately, calling
M_g = frd(M_disc,freq,dt)
yields the same error. I believe the third argument is required for discrete time. Calling
M_g = frd(M_disc,freq,dt,'rad/s')
also returns an invalid syntax error.

Accedi per commentare.

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by