Bode Plot
 Bode Plot SISO Root Locus In order to prevent spam, users must register before they can edit or create articles.

## 1 Introduction to Bode Plots

For SISO systems the Bode plot is the single most useful tool. The most intuitive graphical method for controller design is loop shaping which is a fancy way of saying that you add poles and zeros and the right system gain to achieve the desired closed loop response (Bode plot).

The Bode plot is a plot of system reponse as a function of frequency. The x-axis is the frequency of the input signal. The y-axis is the system reponse magnitude (in dB) for the magnitude portion and phase (in degrees) for the phase portion. The plotted magnitude is:

 >> db = @(x) 20*log10(x);


So for a system with a magnitude of 20 dB at 1 Hz, an input of 3 at 1 Hz will result in an output with a magnitude of 30.

On a Bode plot this relationship for all frequencies of interest is easily recognized. The Bode plot is obvious enough to be useful to those without much training yet contains enough information that for years a control engineer will still be learning and discovering new ways to use the information present.

## 2 Elements of the Bode Plot

The Bode plot boils down to the following:

Table 1: Bode Plot Magnitude Components
Component Change Plot

DC Gain

Determines magnitude at 0 Hz

Pole

Each pole changes the slope of the magnitude by -20 dB/decade+

Zero

Each zero changes the slope of the magnitude by +20 dB/decade+

The phase change is dependent on the sign of the current root. Below is an equation for the phase change

 $LaTeX: \Delta\theta=\mbox{sign}\left(root\right)\left(\eta_{zeros}-\eta_{poles}\right)*90\mbox{ degrees}$

where

$LaTeX: \Delta\theta$ is the change in phase,
$LaTeX: \mbox{root}$ is the current zero or pole being plotted, and
$LaTeX: \eta_{zeros}, \eta_{poles}$ are the number of zeros and poles respectively.

## 3 Bode Plot Examples

### 3.1 Bode Plots for Simple First Order Systems

Below are examples of bode plots for first order systems.

Examples:

• Single Pole (1 rad/sec), No Zeros, DC Gain = 1
Figure 1: a = tf([1], [1 1]);
 >> a = tf([1], [1 1]);
>> approxBode(a)

Figure 2: a = tf([1 10], [1 1]);
• Single Pole (1 rad/sec), Single Zero (10 rad/sec), DC Gain = 1
 >> a = tf([1 10], [1 1]);
>> approxBode(a)

Figure 3: a = tf([1 10], [1 100]);
• Single Pole (100 rad/sec), Single Zero (10 rad/sec), DC Gain = 1
 >> a = tf([1 10], [1 100]);
>> approxBode(a)

Figure 4: a = 100 * tf([1 10], [1 1]);
• Single Pole (1 rad/sec), Single Zero (10 rad/sec), DC Gain = 100
 >> a = 100 * tf([1 10], [1 1]);
>> approxBode(a)


### 3.2 Bode Plots for Simple Second Order Systems

Below are examples of bode plots for second order systems.

Examples:

Figure 5: a = tf([1], [1 1]);
• Single Pole (1 rad/sec), No Zeros, DC Gain = 1
 >> a = tf([1], [1 2 3]);
>> approxBode(a)

Figure 6: a = tf([1 10], [1 100]);
• Single Pole (100 rad/sec), Single Zero (10 rad/sec), DC Gain = 1
 >> a = tf([1 10], [1 100 100]);
>> approxBode(a)

Figure 7: a = 100 * tf([1 10], [1 1]);
• Single Pole (1 rad/sec), Single Zero (10 rad/sec), DC Gain = 100
 >> a = 100 * tf([10^2], [1 2*10 10^2]);
>> approxBode(a)


### 3.3 More Complex Bode Plot Examples

For more complex example I invite you to download my function and use it in your own version of MATLAB. Beware that it fails when num(end) == 0 or den(end) == 0 where num and den are defined as:

 >> [num, den] = tfdata(lti_sys, 'v');


## 4 MATLAB

### 4.1 Approximate Bode Plots

 TODO Fix file