123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- function D = meeg(varargin)
- % Function for creating meeg objects.
- % FORMAT
- % D = meeg;
- % returns an empty object
- % D = meeg(D);
- % converts a D struct to object or does nothing if already
- % object
- % D = meeg(nchannels, nsamples, ntrials)
- % return a time dataset with default settings
- % D = meeg(nchannels, nfrequencies, nsamples, ntrials)
- % return TF time dataset with default settings
- %
- % SPM MEEG format consists of a header object optionally linked to
- % binary data file. The object is usually saved in the header mat file
- %
- % The header file will contain a struct called D. All
- % information other than data is contained in this struct and access to the
- % data is via methods of the object. Also, arbitrary data can be stored
- % inside the object if their field names do not conflict with existing
- % methods' names.
- %
- % The following is a description of the internal implementation of meeg.
- %
- % Fields of meeg:
- % .type - type of data in the file: 'continuous', 'single', 'evoked'
- % .Fsample - sampling rate
- %
- % .data - file_array object linking to the data or empty if unlinked
- %
- %
- % .Nsamples - length of the trial (whole data if the file is continuous).
- % .timeOnset - the peri-stimulus time of the first sample in the trial (in sec)
- %
- % .fname, .path - strings added by spm_eeg_load to keep track of where a
- % header struct was loaded from.
- %
- % .trials - this describes the segments of the epoched file and is also a
- % structure array.
- %
- % Subfields of .trials
- %
- % .label - user-specified string for the condition
- % .onset - time of the first sample in seconds in terms of the
- % original file
- % .bad - 0 or 1 flag to allow rejection of trials.
- % .repl - for epochs that are averages - number of replications used
- % for the average.
- % .tag - the user can put any data here that will be attached to
- % the respective trial. This is useful e.g. to make sure the
- % relation between regressors and data is not broken when
- % removing bad trials or merging files.
- % .events - this is a structure array describing events related to
- % each trial.
- %
- % Subfields of .events
- %
- % .type - string (e.g. 'front panel trigger')
- % .value - number or string, can be empty (e.g. 'Trig 1').
- % .time - in seconds in terms of the original file
- % .duration - in seconds
- %
- % .channels - This is a structure array which is a field of meeg.
- % length(channels) should equal size(.data.y, 1) and the order
- % must correspond to the order of channels in the data.
- %
- % Subfields of .channels
- %
- % .label - channel label which is always a string
- % .type - a string, possible values - 'MEG', 'EEG', 'VEOG', 'HEOG',
- % 'EMG' ,'LFP' etc.
- % .units - units of the data in the channel.
- % .bad - 0 or 1 flag to mark channels as bad.
- % .X_plot2D, .Y_plot2D - positions on 2D plane (formerly in ctf). NaN
- % for channels that should not be plotted.
- %
- % .sensors
- %
- %
- % Subfields of .sensors (optional)
- % .meg - struct with sensor positions for MEG (subfields: .pnt .ori .tra .label)
- % .eeg - struct with sensor positions for MEG (subfields: .pnt .tra .label)
- %
- % .fiducials - headshape and fiducials for coregistration with sMRI
- %
- % Subfiels of .fiducials (optional)
- % .pnt - headshape points
- % .fid.pnt - fiducial points
- % .fid.label - fiducial labels
- %
- % .transform - additional information for transfomed (most commonly time-frequency) data
- % Subfields of .transform
- % .ID - 'time', 'TF', or 'TFphase'
- % .frequencies (optional)
- %
- % .history - structure array describing commands that modified the file.
- %
- % Subfields of .history:
- %
- % .function - string, the function name
- % .arguments - cell array, the function arguments
- % .time - when function call was made
- %
- % .other - structure used to store other information bits, not fitting the
- % object structure at the moment,
- % for example:
- % .inv - structure array corresponding to the forw/inv problem in MEEG.
- % .val - index of the 'inv' solution currently used.
- %
- % .condlist - cell array of unique condition labels defining the proper
- % condition order
- %
- % .montage - structure used to store info on on-line montage used
- % .M contains transformation matrix of the montage and names of
- % original and new channels (+ new channels definition)
- % .Mind indicates which montage to use
- %__________________________________________________________________________
- % Copyright (C) 2005-2011 Wellcome Trust Centre for Neuroimaging
- % Vladimir Litvak
- % $Id: meeg.m 6525 2015-08-20 10:03:16Z vladimir $
- switch nargin
- case 0
- D = struct('Nsamples', 0);
- case 1
- D = varargin{1};
- case 2
- error('Illegal number of arguments');
- case 3
- D = struct('Nsamples', varargin{2}, ...
- 'channels', struct('bad', num2cell(zeros(1, varargin{1}))), ...
- 'trials', struct('bad', num2cell(zeros(1, varargin{3}))));
- case 4
- D = struct('Nsamples', varargin{3}, ...
- 'channels', struct('bad', num2cell(zeros(1, varargin{1}))), ...
- 'trials', struct('bad', num2cell(zeros(1, varargin{4}))));
- D.transform.ID = 'TF';
- D.transform.frequencies = 1:varargin{2};
- end
- if ~isa(D, 'meeg')
- D = class(checkmeeg(D), 'meeg');
- end
|