Bode Plot Matlab Homework: High Pass Filter

AI Thread Summary
The discussion focuses on creating a theoretical Bode plot for a high-pass filter using MATLAB. The user initially struggles with the transfer function representation and the resulting plot, which does not resemble a high-pass filter. Key advice includes rewriting the transfer function in terms of the Laplace variable 's' and ensuring the numerator and denominator vectors correctly represent the filter's order. After modifying the code to include the correct transfer function format, the user successfully generates the expected plot with the appropriate corner frequency of 5 kHz. The importance of accurately defining the transfer function in MATLAB is emphasized for achieving the desired results.
roam
Messages
1,265
Reaction score
12

Homework Statement



I'm trying to make a theoretical Bode plot of a High pass filter (made up of a capacitor and a resistor). The transfer function is:

##T=\frac{V_{out}}{V_{in}}= \frac{R}{R+1/(j\omega C)} = \frac{1}{1-j\omega_0 / \omega}##

With a corner frequency of 5 kHz or in radians:

##\omega_0 = \frac{1}{RC} = \frac{1}{(1440.96 \Omega)(22 \ nF)}##

The Attempt at a Solution



I rewrote the transfer function as:

##\frac{s}{s+\omega_0}## where s=jω

And used the following code:

w=1/(1440.96*(22e-9))

N=[1];
D=[1 w];
sys = rss(5);
h = bodeplot(sys);
setoptions(h,'FreqUnits','Hz','PhaseVisible','off');
h=bode(N,D);

And here is what I got:

qrdjc7.jpg


Clearly this is wrong, it is not the graph of a high-pass filter. Here is my experimental result (how the curve should look like):

iqg9vp.jpg


So what is wrong with my code? :confused:

Any help is greatly appreciated.
 

Attachments

  • theoretical.jpg
    theoretical.jpg
    10.5 KB · Views: 558
  • experimental.jpg
    experimental.jpg
    13.2 KB · Views: 510
Physics news on Phys.org
MATLAB usually expects that when you're working with transfer functions, they're expressed in the complex variable of the Laplace transform. You can make things easier for yourself if you instead use:
<br /> \frac{V_\mathrm{out}}{V_\mathrm{in}} = \frac{R}{R + \frac{1}{s C}}<br />
Both commands 'bodeplot' and 'bode' expect an argument of 'Dynamic System Model' type. Here's a trick you can use to make your code more readable when creating these objects:
Code:
s = tf('s');
sys = R/(R + 1/(s*C));

Maybe give that a try.
 
  • Like
Likes 1 person
Thank you so much for the prompt reply. I modified my code as you instructed, and the resulting curve looks correct (I get the 5kHz corner frequency where required). :)
 
I'm late to the party, but the problem is you've defined the transfer function incorrectly.
Code:
N=[1];
D=[1 w];
will produce\frac{1}{s+\omega_0};to get the desired TF of\frac{s}{s+\omega_0}you need to do
Code:
N=[1 0];
D=[1 w];

The vectors defining the numerator and denominator of the TF are descending powers of s, so you need [s^1\;s^0].
 
  • Like
Likes 1 person
Back
Top