[解決済み] 減衰比一定の直線と根元の軌跡との交点を求めるためのrlocfindの代替プログラム(Matlab
2022-02-14 22:46:25
質問
根軌跡が減衰比一定の直線と交差する点でのゲインを求めるには、rlocfind関数を使用できますが、ユーザが手動で点を選択し、Matlabが根軌跡上でその選択に最も近い点を見つける必要があります。手動で選択することなく、正確な交点を見つける方法はないでしょうか?
h = tf([2 5 1],[1 2 3]);
rlocus(h)
z = 0.707; sgrid(z,0)
k = rlocfind(h)
正しいゲイン値が1より大きい場合、rlocfindを使用せずにゲインの値を求めることはできますか?例えば、以下の伝達関数では、ゲイン値は23.4であるべきです。
h = tf(1,poly([-2 -4 -6]))
minfun = @(k) (0.75 - tf2dampingratio(h, k))^2;
gain = fminbnd(minfun, 0, 1) % 0.1970
rlocus(h) % Root locus
ylim([-3 3])
z = 0.75; sgrid(z,0)
K = rlocfind(h)
function dampingratio = tf2dampingratio(h, k)
[num, den] = tfdata(h);
poles = roots(den{:} + k * num{:});
dampingratio = cos(pi - angle(poles(1)))
end
解決方法は?
それを直接行えるMATLABの関数を知りません。しかし、私たちのために計算を行う小さな関数を書くことができます。根軌跡とは、ある利得で負帰還をかけたときに、系の極がどのように動くかをプロットしたものであることが分かっています(MATLABの ドキュメント ). また、減衰比は極が負の実軸となす角の余弦です(図版は ウィキペディア ).
h = tf([2 5 1],[1 2 3]);
minfun = @(k) (0.707 - tf2dampingratio(h, k))^2;
gain = fminbnd(minfun, 0, 1); % 0.1970
function dampingratio = tf2dampingratio(h, k)
[num, den] = tfdata(h);
poles = roots(den{:} + k * num{:});
dampingratio = cos(pi - angle(poles(1)));
end
関連
-
[解決済み】「Index exceeds the number of array elements (1)」というエラーを修正するにはどうすればよいですか?
-
[解決済み] プロットを回転させる?
-
[解決済み] Matlabで描画しています。図形を保存するか、変数を保存するか?
-
[解決済み] Matlabでm-fileを実行するとき、コマンドビューでどのように改行を出力するのですか?
-
[解決済み] MATLABによるパワーメソッド
-
[解決済み] Matlab Error: ポジション1のインデックスが配列の境界を越えています
-
[解決済み] Matlab - rectangle関数を使用せずに矩形をプロットする
-
[解決済み] Matlabでファイル名を変更する - movefileがファイルの代わりにフォルダを作成する
-
[解決済み] Matlabで'symfun'によって記号関数の微分を実装するには?
-
[解決済み] Matlab - 収束率を計算する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] matlabエディタで複数の行をコメントするためのショートカットキーはありますか?
-
[解決済み] Matlabで矢印を描くには?
-
[解決済み] 部分ピボットによるガウス消去の実装【終了しました
-
[解決済み] matlab で "カラーマップ" プロットを作成するにはどうすればよいですか?
-
[解決済み] プロットを回転させる?
-
[解決済み] データの補間は失敗:グリッドベクトルは与えられた値に一致する点のグリッドを定義しない
-
[解決済み] Matlab - rectangle関数を使用せずに矩形をプロットする
-
[解決済み] 指定された矩形に含まれる配列中の点を見つける( matlab )
-
[解決済み] MatlabのA=[x; y']は何を意味するのですか?
-
[解決済み] MatLab: 関数の引数を設定する