フィルターのクリア

How do I call "frd" for discrete time?

5 ビュー (過去 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 Center および File ExchangeGet 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