Bode plot for RC high pass filter in Matlab

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
3 replies · 4K views
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: 600
  • experimental.jpg
    experimental.jpg
    13.2 KB · Views: 553
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:
[tex] \frac{V_\mathrm{out}}{V_\mathrm{in}} = \frac{R}{R + \frac{1}{s C}}[/tex]
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   Reactions: 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[tex]\frac{1}{s+\omega_0};[/tex]to get the desired TF of[tex]\frac{s}{s+\omega_0}[/tex]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 [itex]s[/itex], so you need [itex][s^1\;s^0][/itex].
 
  • Like
Likes   Reactions: 1 person