Home > vbmeg > functions > gui > preAnalysis > meeg_processor > signal_processor > vb_signal_processor_is_valid_parm.m

vb_signal_processor_is_valid_parm

PURPOSE ^

check the validity of a specified parmeter.

SYNOPSIS ^

function [is_valid, reason] = vb_signal_processor_is_valid_parm(parm)

DESCRIPTION ^

 check the validity of a specified parmeter.
 [USAGE]
    [is_valid, reason] = vb_signal_processor_is_valid_parm(parm);
 [IN]
    parm : parameter.
 [OUT]
    is_valid : true/false. true means that the parameter is valid. [bool]
      reason : error reason [string]

 Copyright (C) 2011, ATR All Rights Reserved.
 License : New BSD License(see VBMEG_LICENSE.txt)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function [is_valid, reason] = vb_signal_processor_is_valid_parm(parm)
0002 % check the validity of a specified parmeter.
0003 % [USAGE]
0004 %    [is_valid, reason] = vb_signal_processor_is_valid_parm(parm);
0005 % [IN]
0006 %    parm : parameter.
0007 % [OUT]
0008 %    is_valid : true/false. true means that the parameter is valid. [bool]
0009 %      reason : error reason [string]
0010 %
0011 % Copyright (C) 2011, ATR All Rights Reserved.
0012 % License : New BSD License(see VBMEG_LICENSE.txt)
0013 
0014 %
0015 % --- Previous check
0016 %
0017 if ~exist('parm', 'var')
0018     error('parm is a required parameter.');
0019 end
0020 
0021 %
0022 % --- Main Procedure
0023 %
0024 d = vb_define_signal_processor;
0025 
0026 switch(parm.type)
0027     case d.TYPE_PROCESSING_BIAS_CORRECTION
0028         [is_valid, reason] = inner_check_bias_correction(parm);
0029     case d.TYPE_PROCESSING_HIGHPASS        
0030         [is_valid, reason] = inner_check_highpass(parm);
0031     case d.TYPE_PROCESSING_LOWPASS         
0032         [is_valid, reason] = inner_check_lowpass(parm);
0033     case d.TYPE_PROCESSING_BANDPASS        
0034         [is_valid, reason] = inner_check_bandpass(parm);
0035     case d.TYPE_PROCESSING_STOPBAND        
0036         [is_valid, reason] = inner_check_stopband(parm);
0037     case d.TYPE_PROCESSING_DOWNSAMPLE      
0038         [is_valid, reason] = inner_check_downsampling(parm);
0039     case d.TYPE_PROCESSING_COMMON_REFERENCE
0040         [is_valid, reason] = inner_check_common_reference(parm);
0041     otherwise
0042         error('Unknown parameter type was specified.');
0043 end
0044 
0045 %
0046 % --- Check parameter section
0047 %
0048 
0049 function [is_valid, reason] = inner_check_bias_correction(parm)
0050 is_valid = true;
0051 reason = '';
0052 if length(parm.mode) == 2
0053     if parm.mode(1) < 0 || parm.mode(2) <= 0 || parm.mode(1) >= parm.mode(2)
0054         is_valid = false;
0055         reason = 'Specified ''mode''(time window[t1, t2]) is invalid.';
0056     end
0057 elseif (parm.mode == 0 || parm.mode == 1 || parm.mode == 2)
0058     % do nothing
0059 else
0060     is_valid = false;
0061     reason   = 'The specified ''mode'' is invalid.';
0062 end
0063 
0064 
0065 function [is_valid, reason] = inner_check_highpass(parm)
0066 is_valid = true;
0067 reason = '';
0068 if parm.cutoff_freq <= 0
0069     is_valid = false;
0070     reason   = 'The specified ''Cutoff frequency'' is invaild.';
0071 elseif ~(parm.impulse_response == 1 || parm.impulse_response == 2)
0072     is_valid = false;
0073     reason   = 'The specified ''Impulse response'' is invalid.';
0074 elseif parm.impulse_response == 2 && ...
0075        (parm.order < 0 || ceil(parm.order) ~= parm.order)
0076         is_valid = false;
0077         reason = 'The specified ''Filter order'' is invalid.';
0078 elseif ~(parm.filtfilt == 0 || parm.filtfilt == 1)
0079     is_valid = false;
0080     reason   = 'The specified ''Time delay correction'' is invalid.';
0081 end
0082 
0083 function [is_valid, reason] = inner_check_lowpass(parm)
0084 is_valid = true;
0085 reason = '';
0086 [is_valid, reason] = inner_check_highpass(parm);
0087 
0088 
0089 function [is_valid, reason] = inner_check_bandpass(parm)
0090 is_valid = true;
0091 reason = '';
0092 if parm.cutoff_freq_low <= 0
0093     is_valid = false;
0094     reason   = 'The specified ''Lower cutoff frequency'' is invalid.';
0095 elseif parm.cutoff_freq_high <= 0
0096     is_valid = false;
0097     reason   = 'The speicifed ''Higher cutoff frequency'' is invaild.';
0098 elseif parm.cutoff_freq_low >= parm.cutoff_freq_high
0099     is_valid = false;
0100     reason   = 'The specified ''Lower cutoff frequency'' is larger than ''Higher frequency''.';
0101 elseif ~(parm.impulse_response == 1 || parm.impulse_response == 2)
0102     is_valid = false;
0103     reason   = 'The specified ''Impulse response'' is invalid.';
0104 elseif parm.impulse_response == 2 && ...
0105        (parm.order < 0 || ceil(parm.order) ~= parm.order)
0106         is_valid = false;
0107         reason = 'The specified ''Filter order'' is invalid.';
0108 elseif ~(parm.filtfilt == 0 || parm.filtfilt == 1)
0109     is_valid = false;
0110     reason   = 'The specified ''Time delay correction'' is invalid.';
0111 end
0112 
0113 function [is_valid, reason] = inner_check_stopband(parm)
0114 is_valid = true;
0115 reason = '';
0116 [is_valid, reason] = inner_check_bandpass(parm);
0117 
0118 function [is_valid, reason] = inner_check_downsampling(parm)
0119 is_valid = true;
0120 reason = '';
0121 if parm.dsamp_freq < 1 || (ceil(parm.dsamp_freq) ~= parm.dsamp_freq)
0122     is_valid = false;
0123     reason   = '''New sampling frequency'' should be integer larger than 1.';
0124 end
0125 
0126 function [is_valid, reason] = inner_check_common_reference(parm)
0127 is_valid = true;
0128 reason = '';
0129 if ~(parm.mode == 0 || parm.mode == 1)
0130     is_valid = false;
0131     reason   = 'The specified ''mode'' is invalid.';
0132 end

Generated on Mon 22-May-2023 06:53:56 by m2html © 2005