ECG-Kit 1.0
(1,859 bytes)
%% (Internal) Convert matrix of ECG wave annotations to a struct position format, used in wavedet algorithm
%
% [pos_matrix, fields ] = positions2matrix(this_position, fields)
%
% Arguments:
%
% + this_position: struct with fields vectors of annotations
%
% + fields: field names in pos_matrix
%
% Output:
%
% + pos_matrix: with the fields defined in fields variable
%
% + fields: field names in pos_matrix
%
% Example:
%
% See also matrix2positions
%
% Author: Mariano Llamedo Soria llamedom@electron.frba.utn.edu.ar
% Version: 0.1 beta
% Last update: 14/5/2014
% Birthdate : 21/4/2015
% Copyright 2008-2015
%
function [pos_matrix, fields ] = positions2matrix(this_position, fields)
if( nargin < 2 || isempty(fields) )
fields = rowvec(fieldnames(this_position));
else
if( ~iscell(fields) )
fields = rowvec(cell2str(fields));
end
end
cant_leads = length(this_position);
pos_matrix = cell(cant_leads,1);
for ii = 1:cant_leads
% get the field with max num of annotations
aux_maxlength = 0;
for fname = fields
aux_maxlength = max(aux_maxlength, length(this_position(ii).(fname{1})));
end
%store to use rules on all annotations at the end
aux_matrix = nan(aux_maxlength,length(fields));
count = 1;
for fn = fields
fn = fn{1};
if( isfield( this_position(ii), fn) )
aux_matrix(1:length(this_position(ii).(fn)),count) = colvec(this_position(ii).(fn));
end
count = count + 1;
end
pos_matrix{ii} = aux_matrix;
end
if( cant_leads == 1 )
pos_matrix = aux_matrix;
end
end