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

📄 dwt_functionality_tcase.m

📁 时间序列分析中很用的源码,书的原名为时间序列分析的小波方法.
💻 M
字号:
function tc = dwt_functionality_tcase% dwt_functionality_tcase -- munit test case to test dwt functionality.%%****f* wmtsa.Tests.dwt/dwt_functionality_tcase%% NAME%   dwt_functionality_tcase -- munit test case to test dwt functionality.%% USAGE%   run_tcase('dwt_functionality_tcase')%% INPUTS%%% OUTPUTS%   tc            = tcase structure for dwt testcase.%% DESCRIPTION%%% AUTHOR%   Charlie Cornish%% CREATION DATE%   2004-Apr-25%% COPYRIGHT%   (c) 2004, 2005 Charles R. Cornish%% CREDITS%%% REVISION%   $Revision: 612 $%%***%   $Id: dwt_functionality_tcase.m 612 2005-10-28 21:42:24Z ccornish $  tc = MU_tcase_new(mfilename);tc = MU_tcase_add_test(tc, @test_normal_default);tc = MU_tcase_add_test(tc, @test_normal_wavelet);tc = MU_tcase_add_test(tc, @test_normal_nlevels_J0);tc = MU_tcase_add_test(tc, @test_normal_nlevels_conservative);tc = MU_tcase_add_test(tc, @test_normal_reflection);tc = MU_tcase_add_test(tc, @test_normal_circular);tc = MU_tcase_add_test(tc, @test_insufficient_num_arguments);tc = MU_tcase_add_test(tc, @test_negative_J0);tc = MU_tcase_add_test(tc, @test_invalid_wavelet);tc = MU_tcase_add_test(tc, @test_invalid_nlevels);tc = MU_tcase_add_test(tc, @test_invalid_boundary);tc = MU_tcase_add_test(tc, @test_opt_RetainVJ);tc = MU_tcase_add_test(tc, @test_multivariate);returnfunction test_normal_default(mode, varargin)% test_normal_default -- Smoke test:  Normal execution, default parameters  [X, att] = wmtsa_data('ecg');  [WJ, VJ, w_att] = dwt(X);return  function test_normal_wavelet(mode, varargin)% test_normal_wavelet -- Normal execution, specify wavelet  [X, att] = wmtsa_data('ecg');  [WJ, VJ, w_att, NJ] = dwt(X, 'la8');returnfunction test_normal_nlevels_J0(mode, varargin)% test_normal_nlevels_J0 -- Normal execution, specify nlevels = J0 = 10.  [X, att] = wmtsa_data('ecg');  [WJ, VJ, w_att, NJ] = dwt(X, 'la8', 10);returnfunction test_normal_nlevels_conservative(mode, varargin)% test_normal_nlevels_conservative  -- Normal execution, specify nlevels = 'conservative'  [X, att] = wmtsa_data('ecg');  [WJ, VJ, w_att, NJ] = dwt(X, 'la8', 'conservative');returnfunction test_normal_reflection(mode, varargin)% test_normal_reflection -- Normal execution, specify boundary = 'reflection'      [X, att] = wmtsa_data('ecg');  J0 = 6;  [WJ, VJ, w_att, NJ] = dwt(X, 'la8', J0, 'reflection');  % Ascertain that NJ =  2*2^j  N = length(X);  NX = 2*N;  MU_assert_isequal(J0, length(WJ), 'Length(WJ) not equal J0.', mode);  MU_assert_isequal(J0, length(VJ), 'Length(VJ) not equal J0.', mode);  for (j = 1:J0)    NWJ = length(WJ{j,1});    MU_assert_isequal(NWJ, NX/2^j, 'Number of wavelet coefficients not equal NX / 2^j', mode);    MU_assert_isequal(NJ(j,1), NX/2^j, 'NJ(j,1) not equal NX / 2^j', mode);    NVJ = length(VJ{j,1});    if (j == J0)      nvj = NX / 2^J0;    else      MU_assert_isempty(VJ{j,1}, 'VJ is not empty', mode);      nvj = 0;    end    MU_assert_isequal(NJ(j,2), nvj, 'NJ(j,2) not equal nvj', mode);  end  returnfunction test_normal_circular(mode, varargin)% test_normal_periodic -- Normal execution, specify boundary = 'circular'  [X, att] = wmtsa_data('ecg');  J0 = 6;  [WJ, VJ, w_att, NJ] = dwt(X, 'la8', J0, 'periodic');  % Ascertain that NJ =  2*2^j  N = length(X);  MU_assert_isequal(J0, length(WJ), 'Length(WJ) not equal J0.', mode);  MU_assert_isequal(J0, length(VJ), 'Length(VJ) not equal J0.', mode);  for (j = 1:J0)    NWJ = length(WJ{j,1});    MU_assert_isequal(NWJ, N/2^j, 'Number of wavelet coefficients not equal N / 2^j', mode);    MU_assert_isequal(NJ(j,1), N/2^j, 'NJ(j,1) not equal N / 2^j', mode);    NVJ = length(VJ{j,1});    if (j == J0)      nvj = N / 2^J0;    else      MU_assert_isempty(VJ{j,1}, 'VJ is not empty', mode);      nvj = 0;    end    MU_assert_isequal(NJ(j,2), nvj, 'NJ(j,2) not equal nvj', mode);  endreturnfunction test_insufficient_num_arguments(mode, varargin)% otest_insufficient_num_arguments -- Expected error: Insufficient number of Arguments  [X, att] = wmtsa_data('ecg');  try    [WJt, VJ0t] = dwt;  catch    [errmsg, msg_id] = lasterr;    MU_assert_error('MATLAB:nargchk:notEnoughInputs', msg_id, '', mode);  endreturnfunction test_negative_J0(mode, varargin)% test_negative_J0 --  Expected error:  J0 < 0  [X, att] = wmtsa_data('ecg');  try    [WJ, VJ] = dwt(X, 'la8', -1);  catch    [errmsg, msg_id] = lasterr;    MU_assert_error('WMTSA:negativeJ0', msg_id, '', mode);  endreturnfunction test_invalid_wavelet(mode, varargin)% test_invalid_wavelet --  Expected error:  Invalid wavelet  [X, att] = wmtsa_data('ecg');  try    [WJ, VJ] = dwt(X, 'not_a_wavelet');  catch    [errmsg, msg_id] = lasterr;    MU_assert_error('WMTSA:invalidWaveletTransformFilter', msg_id, '', mode);  endreturnfunction test_invalid_nlevels(mode, varargin)% test_invalid_nlevels -- Expected error:  Invalid nlevels  [X, att] = wmtsa_data('ecg');  try    [WJ, VJ] = dwt(X, 'la8', 'not_a_nlevel_method');  catch    [errmsg, msg_id] = lasterr;    MU_assert_error('WMTSA:invalidNLevelsValue', msg_id, '', mode);  endreturnfunction test_invalid_boundary(mode, varargin)% test_invalid_boundary -- Expected error:  Invalid boundary  [X, att] = wmtsa_data('ecg');  try    [WJ, VJ] = dwt(X, 'la8', '', 'not_a_boundary');  catch    [errmsg, msg_id] = lasterr;    MU_assert_error('WMTSA:invalidBoundary', msg_id, '', mode);  endreturnfunction test_opt_RetainVJ(mode, varargin)% test_opt_RetainVJ  --  Test Retain VJ option  opts.RetainVJ = 1;  [X, att] = wmtsa_data('ecg');  Y = X(1:37);  J0 = 3;  [WJ, VJ, att, NJ] = dwt(Y, 'la8', J0, 'circular', opts);    NJ_exp = [18 0; 9 1; 4 4];  for (j = 1:J0)    MU_assert_isequal(NJ_exp(j,1), NJ(j,1), 'NJ_exp not NJ', mode);    MU_assert_isequal(NJ_exp(j,2), NJ(j,2), 'NJ_exp not NJ', mode);    MU_assert_isequal(NJ_exp(j,1), length(WJ{j}), 'NJ_exp not length(WJ)', mode);    MU_assert_isequal(NJ_exp(j,2), length(VJ{j}), 'NJ_exp not length(VJ)', mode);  end    returnfunction test_multivariate(mode, varargin)% test_multivariate -- Test mulitvariate verions  opts.RetainVJ = 1;  [X, att] = wmtsa_data('ecg');  XX = [X; X(1)];  Y = repmat(XX, [1 5]);  J0 = 3;  [WJ, VJ, att, NJ] = dwt(Y, 'la8', J0, 'circular', opts);      [J0_act NChan] = size(WJ);    MU_assert_isequal(J0, att.J0, 'Number of levels not equal to att.J0.', mode);  MU_assert_isequal(NChan, att.NChan, 'Number of channels not equal to att.NChan.', ...                    mode);    for (i = 1:NChan)    for (j = 1:J0)      MU_assert_isequal(NJ(j,1), length(WJ{j,i}), 'Number of wavelet coefficients not equal to NJ.', mode);      MU_assert_isequal(NJ(j,2), length(VJ{j,i}), 'Number of scaling coefficients not equal to NJ.', mode);      MU_assert_fuzzy_diff(WJ{j,i}, WJ{j,1}, 0, ...                           ['Multi-variate wavelet coefficient channels are not equal']);      MU_assert_fuzzy_diff(VJ{j,i}, VJ{j,1}, 0, ...                           ['Multi-variate scaling coefficient channels are not ' ...                          'equal']);    end  endreturn

⌨️ 快捷键说明

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