⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dfdscomp.m

📁 AFD - Advanced Filter Design using MATLABMiroslav D. Lutovac, Dejan V. Tosicversion 1.00 released 15
💻 M
字号:
function [dstable, ...
          Nmin,Nmax, Nlength,Nindex, ...
          Xmin,Xmax, Emin,Emax, FPmin,FPmax, ...
          cubeaxis,caseaxis] = dfdscomp(speca)

% dfdscomp.m  ADFDS compute design space
%             WARNING: can take several minutes to execute!
% 15:59  17/2/99
%
%   Authors: Dejan V. Tosic, Miroslav D. Lutovac, 1999.02.16
%                 tosic@telekom.etf.bg.ac.yu
%                 lutovac@galeb.etf.bg.ac.yu
%
%   Copyright (c) 1999 by Tosic & Lutovac
%   $Revision: 1.0 $  $Date: 1999/02/16 21:27:42 $
%
%   References:
%        Miroslav D. Lutovac, Dejan V. Tosic, Brian L. Evans
%           Advanced Filter Design for Signal Processing
%                   Using MATLAB and Mathematica

%  calls:
%% dfda2k.m, dfdnell.m, dfdncheb.m, dfdnbut.m, dfdds.m, dfdstabl.m


t0 = clock;

clc
format short e

disp('Advanced Filter Design Space')

Fp = speca(1);
Fs = speca(2);
Ap = speca(3);
As = speca(4);

disp('Lowpass attenuation limits specification')
disp(['Fp = ', num2str(Fp)])
disp(['Fs = ', num2str(Fs)])
disp(['Ap = ', num2str(Ap), ' dB'])
disp(['As = ', num2str(As), ' dB'])

Kp = dfda2k(Ap);
Ks = dfda2k(As);
speck = [Fp, Fs, Kp, Ks];

disp('Characteristic-function limits specification')
disp(['Kp = ', num2str(Kp)])
disp(['Ks = ', num2str(Ks)])

nellip = dfdnell(Fp,Fs,Kp,Ks);
ncheb  = dfdncheb(Fp,Fs,Kp,Ks);
nbut   = dfdnbut(Fp,Fs,Kp,Ks);

disp('Order of elliptic, Chebyshev and Butterworth approximation')
disp(['n_elliptic = ', num2str(nellip)])
disp(['n_chebyshev = ', num2str(ncheb)])
disp(['n_butterworth = ', num2str(nbut)])

dstable = dfdds(speck);
dfdstabl(dstable);

% default spec yields
%ds=[n  xi_min  xi_max  e_min       e_max    fp_min  fp_max]
%ds=[8  1.04285 1.0924  0.0625785   0.217091 0.19406  0.203289
%    9  1.022   1.1101  0.0143176   0.217091 0.190964 0.207436
%   10  1.01135 1.1366  0.002622    0.217091 0.186508 0.20962
%   11  1.00587 1.1751  0.000365604 0.217091 0.180398 0.210762
%   12  1.00304 1.2311  0.000036102 0.217091 0.172196 0.211357
%   13  1.00158 1.3150  2.23768e-6  0.217091 0.161215 0.211666
%   14  1.00082 1.4488  6.96606e-8  0.217091 0.146325 0.211827
%   15  1.00042 1.6902  6.68433e-10 0.217091 0.125423 0.21191]

Nmin = min(dstable(:,1));
Nmax = max(dstable(:,1));
Nlength = length(dstable(:,1));
Nindex = 0;

Xmin = min(dstable(:,2));
Xmax = max(dstable(:,3));
Emin = min(dstable(:,4));
Emax = max(dstable(:,5));
FPmin = min(dstable(:,6));
FPmax = max(dstable(:,7));

Xmin1 = dstable(1,2);
Xmax1 = dstable(1,3);
Emin1 = dstable(1,4);
Emax1 = dstable(1,5);
FPmin1 = dstable(1,6);
FPmax1 = dstable(1,7);

cubeaxis = [1, Xmax*1.01, 0, Emax*1.01, FPmin*0.99, FPmax*1.01];
caseaxis = [Xmin1*0.99, Xmax1, 0, Emax1*1.01, FPmin1, FPmax1];

t1 = etime(clock,t0);
disp(['Elapsed time is ',num2str(t1), ' seconds'])

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -