-1

TF オブジェクトから根と極を計算したい。しかし、マニュアルにはその機能が見つかりませんでした。

例えば:

私は与えられたTFオブジェクトを持っています。そして、根と極がどこにあるのか知りたいです。

目的は、2 つのオブジェクトがあり、それらを乗算し、その結果から根と極を知りたいということです。

4

2 に答える 2

1

最も簡単な方法は、オブジェクトからゼロ極-零点ゲイン(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)

于 2012-10-15T06:59:55.117 に答える
0

制御システム ツールボックスの経験はありませんが、試してみます。

ドキュメントいくつかの背景資料を読むと、 TFオブジェクトを次のように定義しているように思えます

TF_obj = tf(num, den, ...)

ここでnum、 とdenは、それぞれ分子と分母の多項式を定義する係数のベクトルです。

編集 (2):既存の TF object がある場合でも、次のようにTF_objアクセスできます。numden

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):他の質問を見ました。あなたはその回答を得たので(私が提案したのとまったく同じ方法で)、これは重複していると考えています。

于 2012-10-15T06:28:31.623 に答える