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

📄 numsigdig_diff.m

📁 时间序列分析中很用的源码,书的原名为时间序列分析的小波方法.
💻 M
字号:
function result = numsigdig_diff(x, y, numsigdig, mode)% numsigdig_diff --  Find differences in two arrays exceedning number of significant digits.%%****f* wmtsa.utils/numsigdig_diff%% NAME% numsigdig_diff --  Find differences in two arrays exceedning number of significant digits.%% USAGE%   result = numsigdig_diff(a, b, [numsigdig], [mode])%% INPUTS%   * x           -- array or vector of values%   * y           -- second array or vector of values%   * numsigdig   -- (optional) number of significant digits threshold%                    Valid values:  >= 0%                    Default: 0%   * mode        -- (optional) format of returned result%                    Valid Values:  'details', 'summary'%                    Default:  'details'%% OUTPUT%   * result      -- array or number containing the result of comparison.%% DESCRIPTION%   numsigdig_diff compares two arrays and allows approximate equality when strict%   equality may not exist due to minor differences due to rounding errors.  %   numsigdig_diff subtracts two arrays and identifies those elements whose %   differences exceed the given number of significant digits.%%   The function has 2 modes of operation:%      details   = return an array of size(a) with elements %                   = 0,   for differences between a and b <  number of significant digits%                   = a-b, for differences between a and b >= number of significant digits%      summary   = return a number whose values %                   = 0, for no differences >  number of significant digits%                   > 0, number of elements >= number of significant digits.%%% AUTHOR%   Charlie Cornish%% CREATION DATE%   2004-07-13   %% COPYRIGHT%%% REVISION%   $Revision: 612 $%%***% $Id: numsigdig_diff.m 612 2005-10-28 21:42:24Z ccornish $  defaults.numsigdig = 15;defaults.mode = 'details';  usage_str = ['Usage:  [result] = ', mfilename, ...             ' (x, y, [numsigdig], [mode])'];try  nargerr(mfilename, nargin, [2:4], nargout, [0:1], 1, usage_str);catch  rethrow(lasterror);endif (size(x) ~= size(y))  error(['size(x) must be equal size(y)']);end% Set defaultstry  set_default('numsigdig', defaults);  set_default('mode', defaults);catch  throw(lasterror);endif (numsigdig < 0)    error(['numsigdig = ', num2str(numsigdig), ' must be >= 0.']);endresult = [];% Find array elements that are within numsigdig tolerance.% numsigdig_locations = ...%    find( round(log10(abs( (x - y) ./ x))) + numsigdig <= 0)% Find array elements with differences less than numsigdig tolerance.xx = x;xx(find(xx == 0)) = 1;% lt_numsigdig_diff_locations = ...%    find( (log10(abs( (x - y) ./ abs(x)))) +  numsigdig <= 0)lt_numsigdig_diff_locations = ...    find( round(log10(abs( (xx - y) ./ xx))) + numsigdig <= 0)% lt_numsigdig_diff_locations = ...%     find( round(log10(abs( (x - y))) - log10(y)) + numsigdig <= 0)switch mode case {'details', 'detailed'}  xydiff = x - y;  xydiff(lt_numsigdig_diff_locations) = 0;  result = xydiff; case 'summary'  xydiff = ones(size(x));  xydiff(lt_numsigdig_diff_locations) = 0;  diff_sum = sum(xydiff(:));  result = diff_sum; otherwise  error(['Unknown mode']);endreturn

⌨️ 快捷键说明

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