matthiasm@8: function outparts = makeparts(beattimes,segtimes,seglevel) matthiasm@8: matthiasm@8: parts = struct('n',[], 'indices',[], 'letter', [],'level',[]); matthiasm@8: nPart = 0; matthiasm@8: nSeg = size(segtimes,1); matthiasm@8: matthiasm@8: for iSeg = 1:nSeg matthiasm@8: newpart = true; matthiasm@8: % tempbeat = struct([]); matthiasm@8: segbeats = find(mean(beattimes,2) >= segtimes(iSeg,1) & mean(beattimes,2) < segtimes(iSeg,2)); matthiasm@8: lenSegbeats = length(segbeats); matthiasm@8: for iPart = 1:nPart matthiasm@8: if seglevel(iSeg) == parts(iPart).level && lenSegbeats == parts(iPart).n matthiasm@8: parts(iPart).indices = [parts(iPart).indices segbeats(1)]; matthiasm@8: % parts(iPart).beat = [parts(iPart).beat tempbeat]; matthiasm@8: newpart = false; matthiasm@8: break; matthiasm@8: else matthiasm@8: newpart = true; matthiasm@8: end matthiasm@8: end matthiasm@8: if newpart && ~isempty(segbeats) matthiasm@8: nPart = nPart + 1; matthiasm@8: parts(nPart).indices = segbeats(1); matthiasm@8: parts(nPart).n = lenSegbeats; matthiasm@8: parts(nPart).level = seglevel(iSeg); matthiasm@8: % parts(nPart).beat = tempbeat; matthiasm@8: end matthiasm@8: matthiasm@8: end matthiasm@8: partnind = zeros(nPart,1); matthiasm@8: partlen = zeros(nPart,1); matthiasm@8: for iPart = 1:nPart matthiasm@8: partnind(iPart) = length(parts(iPart).indices); matthiasm@8: partlen(iPart) = parts(iPart).n; matthiasm@8: end matthiasm@8: [partind,partind] = sort(partnind.*partlen,'descend'); matthiasm@8: letters = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U'}; matthiasm@8: outparts = parts; matthiasm@8: for iPart = 1:nPart matthiasm@8: kPart = partind(iPart); matthiasm@8: parts(kPart).letter = letters{iPart}; matthiasm@8: outparts(iPart) = parts(kPart); matthiasm@8: end