
% Plotting Frequency Responses using Matlab
% 
% M-file:

            %% EE 212 - FrequencyResponseExample.m
            %
            % Description:  M-file showing how to plot frequency responses (magnitude
            % and phase angle) for three circuits.  The RL circuit is a high-pass
            % filter, the RC circuit is a low-pass filter, and the op-amp circuit with
            % two capacitors is a band-pass filter.
            %
            
            %% Clear memory; clear command window; close all existing figures
            clear; clc; close all;
            
            %% RL circuit's (high-pass) frequency response on linear axes
            % vector of angular frequencies (omega) - 250 values between 0.01 and 100
            w = linspace(0.01,10,250);
            R = 1; L = 1;               % values of resistor and inductor
            H = (j*w*L)./(R + j*w*L);   % (complex) transfer function
            figure(1);                  % open first figure
            % plot magnitude response in top half of first figure, and label
            subplot(2,1,1);
            %subplot(6,1,1);
            plot(w, abs(H), 'linewidth', 2);
            grid;
            xlabel('\omega (rad/sec)'); ylabel('|H(j \omega)| (V/V)')
            title('Magnitude Response of RL Circuit''s Transfer Function');
            % plot phase response (using degrees) in bottom half of first figure, and label
            subplot(2,1,2);
            %subplot(6,1,2);
            plot(w, unwrap(angle(H))*180/pi, 'linewidth', 2);
            grid;
            xlabel('\omega (rad/sec)'); ylabel('\angle(H(j \omega)) (\circ)')
            title('Phase Response of RL Circuit''s Transfer Function');
            hold on
            
            
            %% RC circuit's (low-pass) frequency response on linear axes
            % vector of angular frequencies (omega) - 250 values between 0.01 and 100
            figure(2)
            w = linspace(0.01,10,250);
            R = 1; C = 1;               % values of resistor and capacitor
            H = 1./(j*w*R*C + 1);       % (complex) transfer function
            %figure(2);                  % open second figure
            % plot magnitude response in top half of first figure, and label
            subplot(2,1,1);
            %subplot(6,1,3);
            plot(w, abs(H), 'linewidth', 2);
            grid;
            xlabel('\omega (rad/sec)'); ylabel('|H(j \omega)| (V/V)')
            title('Magnitude Response of RC Circuit''s Transfer Function');
            % plot phase response (using degrees) in bottom half of first figure, and label
            subplot(2,1,2);
            %subplot(6,1,4);
            plot(w, unwrap(angle(H))*180/pi, 'linewidth', 2);
            grid;
            xlabel('\omega (rad/sec)'); ylabel('\angle(H(j \omega)) (\circ)')
            title('Phase Response of RC Circuit''s Transfer Function');
            hold on
            %% Op-amp circuit's (band-pass) frequency response on linear axes
            % vector of angular frequencies (omega) - 250 values between 0.01 and 100
            figure(3)
            w = linspace(0.01,10,250);
            H = (-j*w)./(1 + j*w).^2;   % (complex) transfer function
            %figure(3);                  % open third figure
            % plot magnitude response in top half of first figure, and label
            subplot(2,1,1);
            %subplot(6,1,5);
            plot(w, abs(H), 'linewidth', 2);
            grid;
            xlabel('\omega (rad/sec)'); ylabel('|H(j \omega)| (V/V)')
            title('Magnitude Response of Op-amp Circuit''s Transfer Function');
            % plot phase response (using degrees) in bottom half of first figure, and label
            subplot(2,1,2);
            %subplot(6,1,6);
            plot(w, unwrap(angle(H))*180/pi, 'linewidth', 2);
            grid;
            xlabel('\omega (rad/sec)'); ylabel('\angle(H(j \omega)) (\circ)')
            title('Phase Response of Op-amp Circuit''s Transfer Function');
        

%Figures/Plots Generated: 

