1 %>@ingroup datasettools
3 %> @brief Merges several datasets into one (row-wise)
5 %> The
new dataset (
'out') will be first created
as a clone of datasets(1) however with the fields listed in datasets(1).rowfieldnames empty
7 %> Needless say the datasets need to be column-compatible.
13 % prepares output based on first dataset
14 out = datasets(1).copy_emptyrows();
15 out.classlabels = newlabels;
16 % Prepares list of fields to merge, except for classes, which is a more complicated case
17 rr = datasets(1).rowfieldnames;
19 iclasses = find(strcmp('classes', rr));
23 for i = 1:nr % Determines which fields to merge and which to ignore.
25 if size(datasets(j).(rr{i}), 1) < datasets(j).no
26 % If a row field has less elements than the dataset
's no property, the field is excluded from the merge.
34 no_all = sum([datasets.no]);
38 out.(rr{j}) = cell(no_all, size(datasets(1).(rr{j}), 2));
40 out.(rr{j}) = zeros(no_all, size(datasets(1).(rr{j}), 2));
44 % out.classes = zeros(no_all, 1);
51 % Finds new class indexes
52 % newidxs = zeros(1, data.nc);
53 newclasses = data.classes;
55 newclass = find(strcmp(data.classlabels{j}, newlabels))-1;
56 newclasses(data.classes == j-1) = newclass;
59 % merges the rowfieldnames fields (except 'classes
')
63 out.classes(ptr:ptr+data.no-1, :) = newclasses;
65 % out.(rr{j}) = [out.(rr{j}); data.(rr{j})];
66 out.(rr{j})(ptr:ptr+data.no-1, :) = data.(rr{j});
Analysis Session (AS) base class.
function unique_appear(in classlabels)
function data_merge_rows(in datasets)