0001 function [new_tag] = vb_tag_util_union_tag(tags, new_name, trial_list)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 if ~exist('tags', 'var')
0018 error('tag list are required.');
0019 end
0020 if ~exist('new_name', 'var')
0021 error('new_name is a required parameter.');
0022 end
0023 if ~exist('trial_list', 'var')
0024 error('trial_list is a required parameter.');
0025 end
0026
0027
0028
0029
0030 Ntags = length(tags);
0031 tags_trial_ix = [];
0032 for k=1:Ntags
0033 tags_trial_ix = [tags_trial_ix; ...
0034 vb_tag_get_trial_index(tags(k))];
0035 end
0036
0037 tags_trial_ix = unique(tags_trial_ix);
0038 trial_set = trial_list(tags_trial_ix);
0039 Ntrial = length(trial_set);
0040
0041 new_tag = vb_tag_new(new_name);
0042
0043
0044 if Ntrial
0045
0046 [tmp, time_ix] = sort([trial_set.from]);
0047
0048
0049 new_trial_ix = tags_trial_ix(time_ix);
0050 new_tag = vb_tag_add_trial_index(new_tag, new_trial_ix);
0051 end
0052
0053
0054
0055
0056 if nargout ~= 1
0057 error('function caller should receive new tag object.');
0058 end
0059