📄 dfdd5.m
字号:
function [nD1,dD1,n,a,e,fp] = dfdd5(speck,ninc,filtype)
% dfdd5.m DFD Design alternative D5
% 20:09 7/3/99
%
% Authors: Dejan V. Tosic, Miroslav D. Lutovac, 1999.03.07
% tosic@telekom.etf.bg.ac.yu
% lutovac@galeb.etf.bg.ac.yu
%
% Copyright (c) 1999 by Tosic & Lutovac
% $Revision: 1.0 $ $Date: 1999/03/07 03:07:42 $
%
% References:
% Miroslav D. Lutovac, Dejan V. Tosic, Brian L. Evans
% Advanced Filter Design for Signal Processing
% Using MATLAB and Mathematica
% calls:
%% dfdnell.m, dfdhp.m, dfdsimsp.m
if filtype == 'l'
Fp = speck(1);
Fs = speck(2);
Kp = speck(3);
Ks = speck(4);
n = dfdnminq(Fp, Fs, Kp, Ks);
n = n + ninc;
[a,fn] = dfdxminq(n, Fp, Fs, Kp, Ks);
if a > 10000
[a,fn] = dfdxmq2(n, Fp, Fs, Kp, Ks);
end
e = 1/sqrt(dfdl(n,a));
fp = atan(tan(pi*Fp)/fn)/pi;
[nD1,dD1] = dfdhp(n,a,e,fp);
end
if filtype == 'h'
Fp = 0.5 - speck(2);
Fs = 0.5 - speck(1);
Kp = speck(3);
Ks = speck(4);
n = dfdnminq(Fp, Fs, Kp, Ks);
n = n + ninc;
[a,fn] = dfdxminq(n, Fp, Fs, Kp, Ks);
if a > 10000
[a,fn] = dfdxmq2(n, Fp, Fs, Kp, Ks);
end
e = 1/sqrt(dfdl(n,a));
fp = atan(tan(pi*Fp)/fn)/pi;
[nD1,dD1] = dfdhp(n,a,e,fp);
ndHd = max(size(dD1))-1:-1:0;
ndHm = (-ones(size(dD1))).^ndHd;
dD1 = dD1 .* ndHm;
nD1 = nD1 .* ndHm;
end
if filtype == 'b'
speck = dfdsimsp(speck);
Fs1 = speck(1);
Fp1 = speck(2);
Fp2 = speck(3);
Fs2 = speck(4);
Ks1 = speck(5);
Kpb = speck(6);
Ks2 = speck(7);
Fp = Fs1;
Fs = atan(tan(pi*Fs1) * (tan(pi*Fs2)-tan(pi*Fs1)) / ...
(tan(pi*Fp2)-tan(pi*Fp1)) )/pi;
Kp = Kpb;
Ks = max([Ks1 Ks2]);
n = dfdnminq(Fp, Fs, Kp, Ks);
n = n + ninc;
[a,fn] = dfdxminq(n, Fp, Fs, Kp, Ks);
if a > 10000
[a,fn] = dfdxmq2(n, Fp, Fs, Kp, Ks);
end
e = 1/sqrt(dfdl(n,a));
fp = atan(tan(pi*Fp)/fn)/pi;
k = tan(pi*Fp)* cot(pi*(Fp2-Fp1));
g = (k-1)/(k+1);
b = - 2*k*cos(pi*(Fp2+Fp1)) /((1+k)*cos(pi*(Fp2-Fp1)));
[nD1,dD1] = dfdhb(n,a,e,fp,k,g,b);
end
if filtype == 'r'
speck = dfdsimsp(speck);
Fp1 = speck(1);
Fs1 = speck(2);
Fs2 = speck(3);
Fp2 = speck(4);
Kp1 = speck(5);
Ksr = speck(6);
Kp2 = speck(7);
Fp = Fp1;
Fs = atan(tan(pi*Fp1) * (tan(pi*Fp2)-tan(pi*Fp1)) / ...
(tan(pi*Fs2)-tan(pi*Fs1)) )/pi;
Kp = min([Kp1 Kp2]);
Ks = Ksr;
n = dfdnminq(Fp, Fs, Kp, Ks);
n = n + ninc;
[a,fn] = dfdxminq(n, Fp, Fs, Kp, Ks);
if a > 10000
[a,fn] = dfdxmq2(n, Fp, Fs, Kp, Ks);
end
e = 1/sqrt(dfdl(n,a));
fp = atan(tan(pi*Fp)/fn)/pi;
k = tan(pi*Fp)* tan(pi*(Fp2-Fp1));
g = (1-k)/(k+1);
b = - 2* cos(pi*(Fp2+Fp1)) /((1+k)*cos(pi*(Fp2-Fp1)));
[nD1,dD1] = dfdhr(n,a,e,fp,k,g,b);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -