function res = selectdata(this, varargin) % Selects data using channel labels, time and condition labels as indices % FORMAT res = selectdata(D, chanlabel, timeborders, condition) % res = selectdata(D, chanlabel, freqborders, timeborders, condition) % % D - meeg object % chanlabel - channel label, cell array of labels or [] (for all channels) % timeborders - [start end] in sec or [] for all times % freqborders - [start end] in Hz or [] for all frequencis (for TF datasets only) % condition - condition label, cell array of labels or [] (for all conditions) % ________________________________________________________________________________ % Copyright (C) 2008 Wellcome Trust Centre for Neuroimaging % Vladimir Litvak % $Id: selectdata.m 5025 2012-10-31 14:44:13Z vladimir $ if this.Nsamples == 0 res = []; return; end if (isequal(transformtype(this), 'time') && numel(varargin)<3) ||... (strncmpi(transformtype(this),'TF',2) && numel(varargin)<4) error('Insufficient number of arguments for data selection'); end chanlabel = varargin{1}; if isequal(transformtype(this), 'time') timeborders = varargin{2}; condition = varargin{3}; elseif strncmpi(transformtype(this),'TF',2) freqborders = varargin{2}; timeborders = varargin{3}; condition = varargin{4}; if isempty(freqborders) freqind = 1:nfrequencies(this); else freqind = indfrequency(this, freqborders(1)):indfrequency(this, freqborders(2)); end else error('Unsupported transform type.'); end if isempty(chanlabel) chanind = 1:nchannels(this); else chanind = indchannel(this, chanlabel); end if isempty(timeborders) timeind = 1:nsamples(this); else timeind = indsample(this, timeborders(1)):indsample(this, timeborders(2)); end if isempty(condition) trialind = 1:ntrials(this); else trialind = indtrial(this, condition); end ss.type = '()'; if isequal(transformtype(this), 'time') ss.subs = {chanind, timeind, trialind}; res = subsref(this,ss); else ss.subs = {chanind, freqind, timeind, trialind}; res = subsref(this,ss); end