TF オブジェクトから根と極を計算したい。しかし、マニュアルにはその機能が見つかりませんでした。
例えば:
私は与えられたTF
オブジェクトを持っています。そして、根と極がどこにあるのか知りたいです。
目的は、2 つのオブジェクトがあり、それらを乗算し、その結果から根と極を知りたいということです。
TF オブジェクトから根と極を計算したい。しかし、マニュアルにはその機能が見つかりませんでした。
例えば:
私は与えられたTF
オブジェクトを持っています。そして、根と極がどこにあるのか知りたいです。
目的は、2 つのオブジェクトがあり、それらを乗算し、その結果から根と極を知りたいということです。
最も簡単な方法は、オブジェクトからゼロ極-零点ゲイン(ZPK)データを取得するtf
ことです。これは次のように実行できます。
G = tf([1], [1 0.1 1]);
[z,p,k] = zpkdata(G);
z % are the zeros (roots as you call them)
p % are the poles
k % is a static gain
を使用してグラフィック表現を取得することもできますpzmap(G)
。
制御システム ツールボックスの経験はありませんが、試してみます。
ドキュメントといくつかの背景資料を読むと、 TFオブジェクトを次のように定義しているように思えます
TF_obj = tf(num, den, ...)
ここでnum
、 とden
は、それぞれ分子と分母の多項式を定義する係数のベクトルです。
編集 (2):既存の TF object がある場合でも、次のようにTF_obj
アクセスできます。num
den
num = TF_obj.num;
den = TF_obj.den;
ここで、極は分母多項式の根ですが、根は分子多項式の根です。したがって、Matlab のroots
関数を使用すると、次のようになります。
TF_roots = roots(num);
TF_poles = roots(den);
また
TF_roots = roots(TF_obj.num);
TF_poles = roots(TF_obj.den);
必要に応じて、Matlab の検索パスのどこかに小さなヘルパー関数を定義して、ワンライナーでこれを行うことができます。
function [rts, pls] = TfRootsPoles(num, den)
rts = roots(num);
pls = roots(den);
end
となることによって
[TF_roots, TF_poles] = TfRootsPoles(num, den);
上記のより読みやすい直感的なバージョンになります。
Egon が提案するように使用することもできます[z,p,k] = zpkdata(G)
。これは本質的に同じ関数ですが、入力として TF オブジェクトを使用します。
編集 (1):他の質問を見ました。あなたはその回答を得たので(私が提案したのとまったく同じ方法で)、これは重複していると考えています。