a1 = 1; b1 = [-0.0228015616127155 0.445214656159413 0.776226769351428 0.445214656159413 -0.0228015616127155]; b2 = [-0.0228015616127150 0.445214656159413 0.776226769351428 0.445214656159413 -0.0228015616127150]; bode(G1 = filt(b1,a1),'-b',; G2 = filt(b2,a1); fmin = 1e-1; fmax = 0.5; Bodeoptions = bodeoptions; Bodeoptions.FreqUnits = 'Hz'; Bodeoptions.Xlim = [fmin,fmax]; Bodeoptions.Ylim = {[-100,10],[0,720]}; Bodeoptions.Grid = 'on'; bode(G1,'-b',G2,':g',Bodeoptions) h = findobj(gcf,'type','line'); set(h,'LineWidth',2); wmin = 2*pi*fmin; H1 = freqresp(G1, wmin); H2 = freqresp(G2, wmin); gain1_dB = 20*log10(abs(H1)); gain2_dB = 20*log10(abs(H2)); phase1_deg = angle(H1)*180/pi; phase2_deg = angle(H2)*180/pi; fprintf('\nAt f = %.4f Hz:\n', fmin); fprintf('G1: Gain = %.16f dB, Phase = %.4f degrees\n', gain1_dB, phase1_deg); fprintf('G2: Gain = %.16f dB, Phase = %.4f degrees\n', gain2_dB, phase2_deg); [mag1, phase1, wout] = bode(G1, wmin); [mag2, phase2, ~] = bode(G2, wmin); gain1_dB = 20*log10(squeeze(mag1)); gain2_dB = 20*log10(squeeze(mag2)); phase1_deg = squeeze(phase1); phase2_deg = squeeze(phase2); fprintf('\nFrom bode():\n'); fprintf('G1: Gain = %.16f dB, Phase = %.4f degrees\n', gain1_dB, phase1_deg); fprintf('G2: Gain = %.16f dB, Phase = %.4f degrees\n', gain2_dB, phase2_deg); Output:
At f = 0.1000 Hz: G1: Gain = 3.4199354940498718 dB, Phase = -72.0000 degrees G2: Gain = 3.4199354940498772 dB, Phase = -72.0000 degrees From bode(): G1: Gain = 3.4199354940498852 dB, Phase = 648.0000 degrees G2: Gain = 3.4199354940498634 dB, Phase = 288.0000 degrees 