📄 utility_round2tolerance.m
字号:
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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -