使用 Matlab 绘制 zplot
Plotting a zplot using Matlab
我正在尝试在 Matlab 中绘制一个 zplot,它显示一个以 0 为中心的单位圆以及绘图的极点和零点。我不允许使用任何其他 matlab 函数(例如 zplane 或 pzplot)来执行此操作。到目前为止,我可以很好地绘制一个单位圆,但我无法让我的绘图显示更多的轴而不扭曲我的圆。我也听说过找到函数的极点和零点,以及如何在我的绘图上将极点显示为小 x,将零点显示为小 o。任何帮助将不胜感激!我的作业看起来像这样并且必须正确处理
等情况
zplot([0 1 1], [0 1]);
zplot([0 1 1], [0 0 1]);
function zplot(b, a)
% ZPLOT Plot a zero-pole plot.
-1 -nb
B(z) b(1) + b(2)z + .... + b(nb+1)z
H(z) = ---- = ---------------------------------
-1 -na
A(z) a(1) + a(2)z + .... + a(na+1)z
% zplot(b, a) plots the zeros and poles which determined by vectors b and a
% The plot includes the unit circle and axes for reference, plotted in black.
% Each zero is represented with a blue 'o' and each pole with a red 'x' on the
%plot.
xmin;
xmax;
ymin;
ymax;
% vector of angles at which points are drawn
angle = 0:2*pi/100:2*pi;
% Unit radius
R = 1;
% Coordinates of the circle
x = R*cos(angle);
y = R*sin(angle);
% Plot the circle
plot(x,y);
axis ([xmin, xmax, ymin, ymax]);
grid on;
end
给定传递函数 G,您可以使用 pzplot() 命令并向其添加一个圆。
G = tf([1 4 1],[1 2 1]);
angle = [0:0.1:2*pi+0.1];
xp = cos(angle);
yp = sin(angle);
figure(1)
hold on
pzplot(G);
plot(xp,yp);
axis equal;
这应该为您提供零极点图,其中 x 表示极点,o 表示零点,单位圆。
这是结果。
如果你不会使用 pzplot() 也不难。这里有一个提示:
num = [1 4 1];%numerator coefficients of transfer function
den = [1 2 1];%denominator coefficients
z = roots(num)%zeros
p = roots(den)%poles
angle = 0:2*pi/100:2*pi;
xp = cos(angle);
yp = sin(angle);
figure(1)
scatter(z,zeros(length(z),1),'o');
hold on
scatter(p,zeros(length(p),1),'x');
plot(xp,yp);
axis equal
输出
请注意,我在此示例中没有处理虚数 poles/zeros。您需要为给定的虚极或零计算正确的 x,y 坐标。 (本例中的poles/zeros都是实数,不是虚数)
我正在尝试在 Matlab 中绘制一个 zplot,它显示一个以 0 为中心的单位圆以及绘图的极点和零点。我不允许使用任何其他 matlab 函数(例如 zplane 或 pzplot)来执行此操作。到目前为止,我可以很好地绘制一个单位圆,但我无法让我的绘图显示更多的轴而不扭曲我的圆。我也听说过找到函数的极点和零点,以及如何在我的绘图上将极点显示为小 x,将零点显示为小 o。任何帮助将不胜感激!我的作业看起来像这样并且必须正确处理
等情况zplot([0 1 1], [0 1]); zplot([0 1 1], [0 0 1]);
function zplot(b, a)
% ZPLOT Plot a zero-pole plot.
-1 -nb
B(z) b(1) + b(2)z + .... + b(nb+1)z
H(z) = ---- = ---------------------------------
-1 -na
A(z) a(1) + a(2)z + .... + a(na+1)z
% zplot(b, a) plots the zeros and poles which determined by vectors b and a
% The plot includes the unit circle and axes for reference, plotted in black.
% Each zero is represented with a blue 'o' and each pole with a red 'x' on the
%plot.
xmin;
xmax;
ymin;
ymax;
% vector of angles at which points are drawn
angle = 0:2*pi/100:2*pi;
% Unit radius
R = 1;
% Coordinates of the circle
x = R*cos(angle);
y = R*sin(angle);
% Plot the circle
plot(x,y);
axis ([xmin, xmax, ymin, ymax]);
grid on;
end
给定传递函数 G,您可以使用 pzplot() 命令并向其添加一个圆。
G = tf([1 4 1],[1 2 1]);
angle = [0:0.1:2*pi+0.1];
xp = cos(angle);
yp = sin(angle);
figure(1)
hold on
pzplot(G);
plot(xp,yp);
axis equal;
这应该为您提供零极点图,其中 x 表示极点,o 表示零点,单位圆。
这是结果。
如果你不会使用 pzplot() 也不难。这里有一个提示:
num = [1 4 1];%numerator coefficients of transfer function
den = [1 2 1];%denominator coefficients
z = roots(num)%zeros
p = roots(den)%poles
angle = 0:2*pi/100:2*pi;
xp = cos(angle);
yp = sin(angle);
figure(1)
scatter(z,zeros(length(z),1),'o');
hold on
scatter(p,zeros(length(p),1),'x');
plot(xp,yp);
axis equal
输出
请注意,我在此示例中没有处理虚数 poles/zeros。您需要为给定的虚极或零计算正确的 x,y 坐标。 (本例中的poles/zeros都是实数,不是虚数)