Code covered by the BSD License  

Highlights from
Analog Filter Design Toolbox

image thumbnail

Analog Filter Design Toolbox

by

 

27 Dec 2005 (Updated )

GUI to design and simulate active (opamp) LP and HP Bessel, Butter, Cheby, and Elliptic filters.

Utility_Round2Tolerance(in,nTol)
function out = Utility_Round2Tolerance(in,nTol)
% Utility_Round2Tolerance is a subfile of the AnalogFilter GUI collection
%
% Utility_Round2Tolerance(in,nTol) takes the number "in" and a tolerance nTol
% nTol may be 0, 1, 5, 10, 20, meaning closest standard 1%, etc.

% James C. Squire, Assistant Professor, Virginia Military Institute
% ver 1.0

if isempty(in)
    out=[];
    return
end
if in==0
    out=0;
    return
end
k=1;
if in<0
    in=abs(in);
    k=-1;
end
switch nTol
    case 0
        out=in;
        return
    case 1
        vTol = [1 1.02 1.05 1.07 1.1 1.13 1.15 1.18 1.21 1.24 1.27 1.3 1.33 1.37 1.4 1.43 1.47 1.5 1.54 1.58 1.62 1.65 1.69 1.74 1.78 1.82 1.87 1.91 1.96 2 2.05 2.1 2.15 2.21 2.26 2.32 2.37 2.43 2.49 2.55 2.61 2.67 2.74 2.8 2.87 2.94 3.01 3.09 3.16 3.24 3.32 3.4 3.48 3.57 3.65 3.74 3.83 3.92 4.02 4.12 4.22 4.32 4.42 4.53 4.64 4.75 4.87 4.99 5.11 5.23 5.36 5.49 5.62 5.76 5.9 6.04 6.19 6.34 6.49 6.65 6.81 6.98 7.15 7.32 7.5 7.68 7.87 8.06 8.25 8.45 8.66 8.87 9.09 9.31 9.53 9.76 10];
    case 5
        vTol = [1 1.1 1.2 1.3 1.5 1.6 1.8 2.0 2.2 2.4 2.7 3.0 3.3 3.6 3.9 4.3 4.7 5.1 5.6 6.2 6.8 7.5 8.2 9.1 10];
    case 10
        vTol = [1 1.2 1.5 1.8 2.2 2.7 3.3 3.9 4.7 5.6 6.8 8.2 10];
    case 20
        vTol = [1 2.2 4.7 10];
    otherwise
        error('Unexpected argument in Round2Tolerance')
end
exponent = floor(log10(in));
mantissa = in/10^exponent;
[dummy, index] = min(abs(vTol - mantissa));
out = vTol(index)*10^exponent*k;

Contact us