Get from Ico-github-logo

Highlights from
echeever/BodePlotGui

  • BodeMagPaper(om_lo, om_hi...
    BodePaper is Matlab code to generate graph paper for Bode plots. It generates
  • BodePaper(om_lo, om_hi, d...
    BodePaper is Matlab code to generate graph paper for Bode plots. It generates
  • BodePlotGui(varargin)
    BODEPLOTGUI Application M-file for BodePlotGui.fig
  • View all files
image thumbnail

echeever/BodePlotGui

by

 

07 Nov 2002 (Updated )

A tool for generating piecewise linear asymptotic Bode diagrams.

BodePaper(om_lo, om_hi, dB_lo, dB_hi, ph_lo, ph_hi, UseRad)
function BodePaper(om_lo, om_hi, dB_lo, dB_hi, ph_lo, ph_hi, UseRad)
%BodePaper is Matlab code to generate graph paper for Bode plots.  It generates
%two semilog graphs for making Bode plots.  The top plot is for magnitude, the 
%units on the vertical axis is set to dB.  The bottom plot shows phase.  The 
%units on the phase plot can be radians or degrees, at the discretion of the 
%user.  The default is degrees.
%
%The correct calling syntax is:
%   BodePaper(om_lo, om_hi, dB_lo, dB_hi, ph_lo, ph_hi, UseRad)
%       om_lo   the low end of the frequency scale.  This can be either
%               rad/sec or Hz.  No units are displayed on the graph.
%       om_hi   the high end of the frequency scale.
%       dB_lo   the bottom end of the dB scale.
%       dB_hi   the top end of the dB scale.
%       ph_lo   the bottom end of the phase scale.
%       ph_hi   the top end of the phase scale.
%       UseRad  an optional argument.  If this argument is non-zero the units
%               on the phase plot are radians.  If this argument is left off
%               or set to zero, the units are degrees.
%

%Ensure proper number of arguments
if (nargin~=6)  & (nargin~=7),
    beep;
    disp(' ');
    disp('BodePaper needs six argmuments (or seven)');
    disp('Enter "help BodePaper" for more information');
    disp(' ');
    return
end

if nargin==6   %If there is no 7th argument
    UseRad=0;   % UseRad=0, (i.e., phase units are degrees.)
end

%This next set of lines makes the magnitude graph.
subplot(211);
semilogx(0,0);  %Create a set of axes
axis([om_lo, om_hi, dB_lo, dB_hi])
title('Bode Plot');
ylabel('Magnitude (dB)');
grid

%This next section of code sets ticks every 20 dB.
h=gca;
ytick=dB_lo+20*[0:(dB_hi-dB_lo)/20];
set(h,'YTick',ytick);


%This next set of lines makes the phase graph.
subplot(212);
semilogx(0,0);  %Create a set of axes
axis([om_lo, om_hi, ph_lo, ph_hi])
xlabel('Frequency - log scale');
grid

%Put in ticks on y axis
h=gca;
if UseRad==0,
    %This next section of code sets ticks every 45 degrees.
    ytick=ph_lo+45*[0:(ph_hi-ph_lo)/45];
    set(h,'YTick',ytick);
    ylabel('Phase (degrees)');
else
    %If radians, make ticks every 0.25 radians.
    ytick=ph_lo+(pi/4)*[0:(ph_hi-ph_lo)/(pi/4)];
    set(h,'YTick',ytick);
    %Set the tick labels to be fractions of pi.
    set(h,'YTickLabel',num2str(ytick'/pi));
    ylabel('Phase/\pi   (radians/\pi)');
end

Contact us