📄 afdorder.m
字号:
function [nmin,nmax,nincmin,nincmax] = afdorder(speck,filnumb)
% afdorder.m AFD order range (nmin,nmax)
% 2:12 29/1/99
%
% Authors: Dejan V. Tosic, Miroslav D. Lutovac, 1999.02.08
% tosic@telekom.etf.bg.ac.yu
% lutovac@galeb.etf.bg.ac.yu
%
% Copyright (c) 1999 by Tosic & Lutovac
% $Revision: 1.0 $ $Date: 1999/02/08 03:07:42 $
%
% References:
% Miroslav D. Lutovac, Dejan V. Tosic, Brian L. Evans
% Advanced Filter Design for Signal Processing
% Using MATLAB and Mathematica
if filnumb==1 | filnumb==2
Fp = speck(1);
Fs = speck(2);
Kp = speck(3);
Ks = speck(4);
elseif filnumb==3
Fs1 = speck(1);
Fp1 = speck(2);
Fp2 = speck(3);
Fs2 = speck(4);
Ks1 = speck(5);
Kpb = speck(6);
Ks2 = speck(7);
B = Fp2 - Fp1;
Fr = sqrt(Fp1*Fp2);
Fp = Fs1;
Fs = Fp*(Fs2-Fs1)/B;
Kp = Kpb;
Ks = max([Ks1 Ks2]);
elseif filnumb==4
Fp1 = speck(1);
Fs1 = speck(2);
Fs2 = speck(3);
Fp2 = speck(4);
Kp1 = speck(5);
Ksr = speck(6);
Kp2 = speck(7);
B = Fs2 - Fs1;
Fr = sqrt(Fs1*Fs2);
Fp = Fp1;
Fs = Fp1*(Fp2-Fp1)/B;
Kp = min([Kp1 Kp2]);
Ks = Ksr;
else
error('AFD ERROR: Unsupported filter type.');
end
k = Fp/Fs;
L = Ks/Kp;
num = ellipke(1-1/L^2)/ellipke(1/L^2);
den = ellipke(1 - k^2)/ellipke(k^2);
nellip = ceil(num/den);
ncheb = ceil(acosh(L)/acosh(1/k));
nmin = nellip;
nmax = min([2*nmin,ncheb-1]);
if nmax < nmin
nmax = nmin;
end
nincmin = 0;
nincmax = nmax - nmin;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -