% % Filename: example7.m % % Description: M-file for displaying RLC circuit response to % periodic input. % %** System Spectra **% clear; % clear matlab memory R = 100; L = 1e-3; C = 100e-9; % define circuit parameters w = -250000:2:250000; % frequency values for spectra H = (R/L)*j*w./((j*w).^2 + (R/L)*j*w + 1/(L*C)); % system TF figure(1); clf; % open and clear figure 1 subplot(2,1,1); plot(w,abs(H)); % plot magnitude spectrum xlabel('\omega rad/sec'); ylabel('|H(\omega)|'); title('RLC Circuit Gain/Magnitude Spectra'); subplot(2,1,2); plot(w,angle(H)*180/pi); % plot phase spectrum xlabel('\omega rad/sec'); ylabel('\angle {H(\omega) deg}'); title('RLC Circuit Phase/Phase Spectra'); %** System Specta as Bode Plots **% figure(2); clf; % open and clear figure 2 w = 1:2:1e6; % frequency values for spectra H = (R/L)*j*w./((j*w).^2 + (R/L)*j*w + 1/(L*C)); % system TF subplot(2,1,1); semilogx(w,20*log10(abs(H))); % plot magnitude spectrum xlabel('\omega rad/sec'); ylabel('|H(\omega)| dB'); title('RLC Circuit Gain/Magnitude Spectra as Bode Plot'); subplot(2,1,2); semilogx(w,angle(H)*180/pi); % plot phase spectrum xlabel('\omega rad/sec'); ylabel('\angle {H(\omega)} deg'); title('RLC Circuit Phase/Phase Spectra as Bode Plot'); %** Input FS Representation **% figure(3); clf; % open and clear figure 3 N = 100; % +/- number of FS terms taken To = 100e-6; wo = 2*pi/To; % fundamental period and frequency D0 = 0.5; % signal offset t = -100e-6:1e-6:200e-6; % time over which we'll plot signal f = D0*ones(size(t)); % start out with DC bias term for n = -N:-1, % loop over negative n Dn = (1-exp(-j*pi*n))./(j*2*pi*n); % Fourier coefficient f = f + real(Dn*exp(j*n*wo*t)); % add FS terms end; for n = 1:N, % loop over positive n Dn = (1-exp(-j*pi*n))./(j*2*pi*n); % Fourier coefficient f = f + real(Dn*exp(j*n*wo*t)); % add FS terms end; subplot(2,2,1); plot(t,f); % plot truncated f(t) FS xlabel('t '); ylabel('f(t)'); title('FS Representation of Input'); %** Input exponential magnitude and phase spectra for 1st 5 harmonics **% i = 1; % vector index to help store Dn and w w = 0; Dn = 0; % reinitialize FS variables for n = -5:-1, % loop over negative n Dn(i) = (1-exp(-j*pi*n))./(j*2*pi*n); % Fourier coefficient w(i) = n*wo; % store associated frequency i = i + 1; % increment vector index end; Dn(i) = D0; w(i) = 0; % store 0 frequency terms i = i + 1; % increment vector index for n = 1:5, % loop over positive n Dn(i) = (1-exp(-j*pi*n))./(j*2*pi*n); % Fourier coefficient w(i) = n*wo; % store associated frequency i = i + 1; % increment vector index; end; subplot(2,2,2); % plot magnitude spectrum of f(t) stem(w,abs(Dn),'filled'); xlabel('\omega ');ylabel('|D_n|'); title('Magnitude Spectrum of f(t)'); subplot(2,2,3); % plot phase spectrum of f(t) stem(w,angle(Dn),'filled'); xlabel('\omega '); ylabel('\angle D_n '); title('Phase Spectrum of f(t)'); %** Output FS Representation **% figure(4); clf; % open and clear figure 3 H0 = 0; % DC system gain y = D0*H0*ones(size(t)); % start out with DC bias term for n = -N:-1, % loop over negative n Dn = (1-exp(-j*pi*n))./(j*2*pi*n); % input Fourier coefficient H = (R/L)*j*n*wo./((j*n*wo).^2 + (R/L)*j*n*wo + 1/(L*C)); % system TF y = y + real(Dn*H*exp(j*n*wo*t)); % add FS terms end; for n = 1:N, % loop over positive n Dn = (1-exp(-j*pi*n))./(j*2*pi*n); % input Fourier coefficient H = (R/L)*j*n*wo./((j*n*wo).^2 + (R/L)*j*n*wo + 1/(L*C)); % system TF y = y + real(Dn*H*exp(j*n*wo*t)); % add FS terms end; subplot(2,2,1); plot(t,y); % plot truncated y(t) FS xlabel('t '); ylabel('y(t)'); title('FS Representation of Output'); %** Output exponential magnitude and phase spectra for 1st 5 harmonics **% i = 1; % vector index to help store DnH and w w = 0; Dn = 0; % reinitialize FS variables for n = -5:-1, % loop over negative n Dn = (1-exp(-j*pi*n))./(j*2*pi*n); % input Fourier coefficient H = (R/L)*j*n*wo./((j*n*wo).^2 + (R/L)*j*n*wo + 1/(L*C)); % system TF DnH(i) = Dn*H; % output Fourier coefficient w(i) = n*wo; % store associated frequency i = i + 1; % increment vector index end; DnH(i) = D0*H0; w(i) = 0; % store 0 frequency terms i = i + 1; % increment vector index for n = 1:5, % loop over positive n Dn = (1-exp(-j*pi*n))./(j*2*pi*n); % input Fourier coefficient H = (R/L)*j*n*wo./((j*n*wo).^2 + (R/L)*j*n*wo + 1/(L*C)); % system TF DnH(i) = Dn*H; % output Fourier coefficient w(i) = n*wo; % store associated frequency i = i + 1; % increment vector index; end; subplot(2,2,2); % plot magnitude spectrum of y(t) stem(w,abs(DnH),'filled'); xlabel('\omega ');ylabel('|D_nH|'); title('Magnitude Spectrum of y(t)'); subplot(2,2,3); % plot phase spectrum of y(t) stem(w,angle(DnH),'filled'); xlabel('\omega '); ylabel('{\angle D_nH} '); title('Phase Spectrum of y(t)');Matlab Plots Generated: