function varargout=wabp(varargin) % % wabp(recName,beginTime,stopTime,resample,signal) % % Wrapper to WFDB WABP: % http://www.physionet.org/physiotools/wag/wabp-1.htm % % Attempts to locate arterial blood pressure (ABP) pulse waveforms in a continuous ABP signal % in the specified WFDB record "recName". The detector algorithm is based on analysis of the first derivative % of the ABP waveform. The output of WABP is an annotation file (with annotator name WABP) in which all % detected beats are labelled normal. % % WABP can process records containing any number of signals, but it uses only one signal for ABP pulse % detection (by default, the lowest-numbered ABP, ART, or BP signal; this can be changed using the % 'signal' option, see below). WABP is optimized for use with adult human ABPs. % It has been designed and tested to work best on signals sampled at 125 Hz. For other ABPs, it may be % necessary to experiment with the sampling frequency as recorded in the input record’s header file % (see WFDBDESC ). % % % % CITING CREDIT: To credit this function, please cite the following paper at your work: % % Zong, W., Heldt, T., Moody, G. B., & Mark, R. G. (2003). % An open-source algorithm to detect onset of arterial blood pressure pulses. % Computers in Cardiology 2003, 30, 259-262. IEEE. % % %Required Parameters: % % recName % String specifying the name of the record in the WFDB path or % in the current directory. % % % Optional Parameters are: % % beginTime (Optional) % String or integer specifying the begin time. The % WFDB time format is described at % http://www.physionet.org/physiotools/wag/intro.htm#time. % If an integer is entered, it should be between 1 % (first sample) and N (last sample). % % stopTime (Optional) % String or integer specifying the begin time. If string, it should be % in WFDB time format, if it is an integer, should be between 1 % (first sample) and N (last sample). % % resample % A 1x1 boolean. If true resamples the signal to 125 Hz (default=0). % % signal % A 1x1 integer. Specify the signal index of the WFDB record to be % used for ABP pulse detection. % % % C Source file written by Wei Zong 1998 % C Source file revised by George Moody 2010 % % MATLAB Wrapper Written by Ikaro Silva, 2013 % Last Modified: January 16, 2013 % Version 1.1 % % Since 0.9.0 % % See also RDANN, RDSAMP, WFDBDESC, WFDBTIME % % % %Example - Note this will create the file: ./slpdb/slp60.wabp in you % %directory % N=2000; % [signal,Fs,tm]=rdsamp('slpdb/slp60',2,N); % [endTime,dateStamp]=wfdbtime('slpdb/slp60',N); % wabp('slpdb/slp60',[],endTime{1},[],2); % [ann]=rdann('slpdb/slp60','wabp') % plot(tm,x);hold on;grid on % plot(tm(ann),x(ann),'or') % %endOfHelp persistent javaWfdbExec if(isempty(javaWfdbExec)) [javaWfdbExec]=getWfdbClass('wabp'); end %Set default pararamter values inputs={'recName','beginTime','stopTime','resample','signal'}; beginTime=[]; stopTime=[]; resample=0; signal=[]; for n=1:nargin if(~isempty(varargin{n})) eval([inputs{n} '=varargin{n};']) end end wfdb_argument={'-r',recName}; if(~isempty(beginTime)) wfdb_argument{end+1}='-f'; %Convert to string if sample number is entered if(isnumeric(beginTime)) [beginTime,~]=wfdbtime(recName,beginTime); end wfdb_argument{end+1}=beginTime; end if(~isempty(stopTime)) wfdb_argument{end+1}='-t'; %Convert to string if sample number is entered if(isnumeric(stopTime)) [stopTime,~]=wfdbtime(recName,stopTime); end wfdb_argument{end+1}=[stopTime]; end if(resample) wfdb_argument{end+1}='-R'; end if(~isempty(signal)) wfdb_argument{end+1}='-s'; wfdb_argument{end+1}=num2str(signal-1); end err=javaWfdbExec.execToStringList(wfdb_argument); if(~isempty(strfind(err.toString,['annopen: can''t']))) error(err) end