2

根を伝達関数 H(z) にプロットし、単位円を重ねて、すべての点を表示するのに十分なスペースを確保する必要があります。ゼロ = [z0 z1 z2...]、極 = [p0 p1 p2] の形式で与えられると、H(z) から根を取得できます。Matlab の roots 関数を使用して、極とゼロの位置を取得できます。これまでの私のMatlabコードは

function zplot(b, a)

b_roots = roots(b);
a_roots = roots(a);

hold on
rectangle('Position',[-1 -1 2 2],'Curvature',[1 1]);
plot(b_roots,'x blue');
plot(a_roots,'o blue');
axis %need axis to be equal and +10percent of maximum value
hold off

end

ここまでで、根と単位円をプロットできましたが、1) 互いに等しく、2) 最高値より 10% 大きくなるように軸を調整する必要があります。この部分をどのように実行すればよいかわかりません。変数 lim_max = max(b_roots,a_roots) を作成しようとしましたが、最終的に配列になり、 axis([-lim_max lim_max -lim_max lim_max]) 関数では機能しませんでした。入力の変化に合わせてプロットを +10% にスケーリングする必要があります。

補足事項 (必須ではありません): プロットすると円のように見える方法はありますか? 画面を再調整することはできますが、それを簡単に行う方法があれば教えてください。

4

2 に答える 2

1

axis equal最小値/最大値を設定して計算します:

function zplot(b, a)

b_roots = roots(b);
a_roots = roots(a);
xlimits = [min(min([real(a_roots);real(b_roots)])), max(max([real(a_roots);real(b_roots)]))];
ylimits = [min(min([imag(a_roots);imag(b_roots)])), max(max([imag(a_roots);imag(b_roots)]))];

hold on
rectangle('Position',[-1 -1 2 2],'Curvature',[1 1]);
plot(b_roots,'x black');
plot(a_roots,'o blue');
axis equal;
xlim(1.1*xlimits);
ylim(1.1*ylimits);
hold off

end
于 2015-04-17T21:55:26.983 に答える
0

次のコードを使用します。これにより、1) x 軸と y 軸の全体の最大制限が検出されます。2) これらの制限が互いに等しくなるように設定されます。3) これらの制限 +10% がプロットされます。

b_roots = roots(b);
a_roots = roots(a);

x_min = min(min([real(a_roots);real(b_roots)]));
x_max = max(max([real(a_roots);real(b_roots)]));
y_min = min(min([imag(a_roots);imag(b_roots)]));
y_max = max(max([imag(a_roots);imag(b_roots)]));

%get the magnitude of the overall minimum value
min_lim = abs(min(x_min,y_min));
 %abs may not be necessary
max_lim = abs(max(x_max,y_max));

%set high and low limits equal to each other from negative to positive
eq_limit = [-max(min_lim,max_lim),max(min_lim,max_lim)];

hold on
rectangle('Position',[-1 -1 2 2],'Curvature',[1 1]);
plot(b_roots,'x black');
plot(a_roots,'o blue');
axis equal;
xlim(1.1*eq_limit);
ylim(1.1*eq_limit);
hold off

@MS の回答とヘルプに感謝します。

于 2015-04-17T22:42:14.453 に答える