Spontaneous Termination of Atrial Fibrillation: The PhysioNet/Computing in Cardiology Challenge 2004 1.0.0
(2,916 bytes)
% -------------------------------------------------------------------------------------------------
% plotSgnMrk.M: Plot signals (on multiple horizontal strips) with vertical markers
% sgn = signal matrix
% pqrs = vector of time indexes (markers)
% freq = sampling frequency
% name = figure title
% nsecr = number of seconds per row
% nbands = number of strips per page
%
% Copyright (C) 2004 Maurizio Varanini, Clinical Physiology Institute, CNR, Pisa, Italy
%
% This program is free software; you can redistribute it and/or modify it under the terms
% of the GNU General Public License as published by the Free Software Foundation; either
% version 2 of the License, or (at your option) any later version.
%
% This program is distributed "as is" and "as available" in the hope that it will be useful,
% but WITHOUT ANY WARRANTY of any kind; without even the implied warranty of MERCHANTABILITY
% or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License along with this program;
% if not, write to the Free Software Foundation, Inc.,
% 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
%
% For any comment or bug report, please send e-mail to: maurizio.varanini@ifc.cnr.it
% -------------------------------------------------------------------------------------------------
function PlotSgnMrk(sgn,pqrs,freq,name, nband, nsecr)
% convert column to row if necessary
[m,n] = size(sgn); if n<m, sgn = sgn.'; end
[m,n] = size(pqrs); if n==1, pqrs = pqrs.'; end
ymin=min(min(sgn));
ymax=max(max(sgn));
nsampt=size(sgn,2);
nsect=nsampt/freq;
if(nargin<4) name=''; end
if(nargin<5) nband=6; end
%if(nargin<6) nsecr=10; end
if(nargin<6) nsecr=nsect/nband; end
nsampr=nsecr*freq; % number of samples per row
isampi=1;
isampf=0;
while isampf < nsampt
figure
for i=0:nband-1
subplot(nband,1,i+1);
isampf = isampi+nsampr;
if(isampf > nsampt) isampf=nsampt; end;
% ymin=min(min(sgn(:,isampi:isampf)));
% ymax=max(max(sgn(:,isampi:isampf)));
xmin=isampi/freq;
xmax=(isampi+nsampr)/freq;
plot([isampi:isampf]/freq, sgn(:,isampi:isampf));
axis tight;
if(i==0) ht=title(name); set(ht,'Interpreter','none'); end;
XLIM([xmin, xmax]);
YLIM([ymin, ymax]);
if(~isempty(pqrs))
hold on;
iqrsint=find((isampi < pqrs)&(isampf > pqrs));
pqrsint=pqrs(iqrsint);
fxpqrs=[pqrsint; pqrsint]/freq;
fypqrs = ones(size(fxpqrs)); fypqrs(1,:)=ymin; fypqrs(2,:)=ymax;
plot(fxpqrs,fypqrs, 'm:+');
end
if(isampf == nsampt) break; end;
isampi = isampf;
end
end