📄 sgrid.m
字号:
function [] = sgrid(zeta,wn)
%SGRID Generate s-plane grid lines for a root locus or pole-zero map.
%
% SGRID generates a grid over an existing continuous s-plane root
% locus or pole-zero map. Lines of constant damping ratio (zeta)
% and natural frequency (Wn) are drawn in.
%
% SGRID('new') clears the graphics screen before plotting the
% s-plane grid so that the root locus or pole-zero map can be
% plotted over the grid using (for example):
%
% sgrid('new')
% hold on
% rlocus(num,den) or pzmap(num,den)
%
% SGRID(Z,Wn) plots constant damping and frequency lines for the
% damping ratios in the vector Z and the natural frequencies in the
% vector Wn.
%
% See also: RLOCUS, ZGRID and PZMAP.
% Clay M. Thompson
% Revised ACWG 6-21-92
% Copyright (c) 1986-93 by the MathWorks, Inc.
error(nargchk(0,2,nargin));
status = ishold;
zx = 0:.01:1;
if nargin==0, % Use existing axis limits
limits = axis;
axis('manual')
hold on
% Round-up axis limits
% wmax = 10 * 10 .^(floor(log10(max(abs(limits)))));
wmax = 10 .^(floor(log10(max(abs(limits)))));
dx = wmax/10;
wn= 0:dx:wmax;
zeta = [ 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1 ];
elseif nargin==1, % Standard scale
hold off
wn = 0:1:10;
zeta = [ 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1 ];
else,
hold on
end
if ~isempty(wn), % Plot natural frequency lines
[w,z] = meshgrid(wn,zx);
re = - w .* z;
[mcols, nrows] = size(z);
im = w .* sqrt( ones(mcols, nrows) - z .* z );
% ix=find(im>limits(4)); im(ix)=ones(length(ix),1)*limits(4);
plot(re,im,'w:',re,-im,'w:');
hold on
end
if ~isempty(zeta), % Plot damping lines
limits = axis;
[w,z] = meshgrid([0;wn(:);2*max(limits(:))]',zeta);
re = -w .* z;
[mcols, nrows] = size(z);
im = w .* sqrt( ones(mcols, nrows) - z .* z );
% ix=find(im>limits(4)); im(ix)=ones(length(ix),1)*limits(4);
plot(re',im','w:',re',-im','w:');
end
if (nargin~=1)&(~status), hold off, end % Return hold to previous status
% uncomment the following lines if you want damping ratio lines labeled.
% Now put wn labels on the curve
%n = length(wn);
%m = length(zeta);
%for i = 1:m
% text(re(i,n),im(i,n),sprintf('%.3g',zeta(m-i+1)))
%end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -