How do I call "frd" for discrete time?

1 次查看(过去 30 天)
Mark
Mark 2014-11-20
评论: Mark 2014-11-21
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?!?

回答(1 个)

Sebastian Castro
Sebastian Castro 2014-11-20
编辑:Sebastian Castro 2014-11-20
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 个评论
Mark
Mark 2014-11-21
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Get Started with Control System Toolbox 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by