To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Revision:

root / _segmentation / makeparts.m

History | View | Annotate | Download (1.39 KB)

1
function outparts = makeparts(beattimes,segtimes,seglevel)
2

    
3
parts = struct('n',[], 'indices',[], 'letter', [],'level',[]);
4
nPart = 0;
5
nSeg = size(segtimes,1);
6

    
7
for iSeg = 1:nSeg
8
    newpart = true;
9
%     tempbeat = struct([]);
10
    segbeats = find(mean(beattimes,2) >= segtimes(iSeg,1) & mean(beattimes,2) < segtimes(iSeg,2));
11
    lenSegbeats = length(segbeats);
12
    for iPart = 1:nPart
13
        if seglevel(iSeg) == parts(iPart).level && lenSegbeats == parts(iPart).n
14
            parts(iPart).indices = [parts(iPart).indices segbeats(1)];
15
%             parts(iPart).beat = [parts(iPart).beat tempbeat];
16
            newpart = false;
17
            break;
18
        else
19
            newpart = true;
20
        end
21
    end
22
    if newpart && ~isempty(segbeats)
23
        nPart = nPart + 1;
24
        parts(nPart).indices = segbeats(1);
25
        parts(nPart).n = lenSegbeats;
26
        parts(nPart).level = seglevel(iSeg);
27
%         parts(nPart).beat = tempbeat;
28
    end
29
    
30
end
31
partnind = zeros(nPart,1);
32
partlen = zeros(nPart,1);
33
for iPart = 1:nPart
34
    partnind(iPart) = length(parts(iPart).indices);
35
    partlen(iPart) = parts(iPart).n;
36
end
37
[partind,partind] = sort(partnind.*partlen,'descend');
38
letters = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U'};
39
outparts = parts;
40
for iPart = 1:nPart
41
    kPart = partind(iPart);
42
    parts(kPart).letter = letters{iPart};
43
    outparts(iPart) = parts(kPart);
44
end