我需要将根绘制到覆盖单位圆的传递函数 H(z) 上,以提供足够的空间来查看所有点。当 H(z) 以 zeros = [z0 z1 z2...],poles = [p0 p1 p2] 的形式给出时,我能够从 H(z) 中得到根。使用 Matlab 的根函数,我可以获得极点和零点位置。到目前为止,我的 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%。
旁注(不必要):当我绘制它时,有没有办法让它看起来像一个圆圈,因为现在它大部分时间看起来像一个椭圆形。我可以重新调整屏幕,这很好,但如果有一种简单的方法可以做到这一点,我也想知道。