第1種チェビシェフフィルタの振幅特性

clear; close all;

syms w;
chebyshev = @(c1,c0) 2*w*c1 - c0;
c0 = 1;
c1 = w;
cs = [c0 c1];
for n=2:10
    cn_prev = cs(n-1);
    cn = cs(n);
    cn_next = chebyshev(cn, cn_prev);
    cs(end+1) = cn_next;
end

n = 5;
xis = [0.1 0.5 1.0];
for idx=1:length(xis)
    xi = xis(idx);
    e = sqrt(10.^(xi/10)-1);

    H_gain = 1/(1+e^2*cs(n+1)^2);
    omega = 0:0.05:2;
    figure(1);
    xistr = sprintf('ξ=%.3gdB',xi);
    plot(omega, subs(H_gain, w, omega),'DisplayName',xistr);
    hold on;
end
nstr=sprintf('Chebyshev filter (n=%.3g)',n);
figure(1); legend; title(nstr);

n = 8;
xis = [0.1 0.5 1.0];
for idx=1:length(xis)
    xi = xis(idx);
    e = sqrt(10.^(xi/10)-1);

    H_gain = 1/(1+e^2*cs(n+1)^2);
    omega = 0:0.05:2;
    figure(2);
    xistr = sprintf('ξ=%.3gdB',xi);
    plot(omega, subs(H_gain, w, omega),'DisplayName',xistr);
    hold on;
end
nstr=sprintf('Chebyshev filter (n=%.3g)',n);
figure(2); legend; title(nstr);

n = 10;
xis = [0.1 0.5 1.0];
for idx=1:length(xis)
    xi = xis(idx);
    e = sqrt(10.^(xi/10)-1);

    H_gain = 1/(1+e^2*cs(n+1)^2);
    omega = 0:0.01:2;
    figure(3);
    xistr = sprintf('ξ=%.3gdB',xi);
    plot(omega, subs(H_gain, w, omega),'DisplayName',xistr);
    hold on;
end
nstr=sprintf('Chebyshev filter (n=%.3g)',n);
figure(3); legend; title(nstr);

big;