[Eeglablist] Passing vector elements to pop_select() 'no channel' argument

Morett, Laura laura.morett at yale.edu
Wed Apr 5 06:19:01 PDT 2017

Dear list,
I am writing to ask how I can pass a vector with multiple channel names for removal to pop_select().  At present, I’ve defined the following vectors with the names of the channels that I want to remove (chan_remove) and the subjects that I want to remove them from (subjs_rm_chan) near the beginning of my script:

chan_remove = {{'E128'}, [{{'E87'} {'E119'}}], {'E104'}, {'E104'}, {'E119'}, {'E15'}}
subjs_rm_chan = {'11113','11115','11135','11138','11145','11146'};

nsubjbadch = length(subjs_rm_chan); % number of subjects w/ bad channels

Further down, I attempt to remove them using the following code:

for s=1:nsubjbadch % Loop through list of subjects with bad channels
        data_path  = [home_path subjs_rm_chan{s} '/'];   % Path to the folder containing the current subject's data
        EEG = pop_loadset('filename',[subjs_rm_chan{s} '_reref_filt.set'], 'filepath', data_path);
        EEG = pop_select(EEG,'nochannel', chan_remove{s});

When I run this code, I receive the following errors:

Error using cell/unique (line 85)
Input A must be a cell array of character vectors.

Error in cell/setdiff>cellsetdifflegacy (line 199)
    [a,ia] = unique(a,'legacy');

Error in cell/setdiff (line 133)
        [varargout{1:nlhs}] = cellsetdifflegacy(varargin{1:2},logical(flaginds(1)));

Error in setdiff_bc (line 20)
    [C,IA] = setdiff(A,B,varargin{:},'legacy');

Error in eeg_interp (line 137)
        goodchans = setdiff_bc(1:EEG.nbchan, badchans);

Error in pop_interp (line 156)
    EEG = eeg_interp(EEG, bad_elec, method);

I checked, and chan_remove is indeed not a cell array of character vectors, so I tried using the following alternative:

chan_remove = {[128], [[87], [119]], [104], [104], [119], [15]};

However, this doesn’t solve the problem, returning the following error when I run the code above:

Index exceeds matrix dimensions.

Error in pop_select (line 234)
         noChannelAsCell{nochanId} = EEG.chanlocs(g.nochannel(nochanId)).labels;

Error in eeg_interp (line 139)
        EEG       = pop_select(EEG, 'nochannel', badchans);

Error in pop_interp (line 156)

I’ve tried several different variations of syntax in defining chan_remove to no avail.  Does anyone know:

1.       How I can pass a vector of channel names to cycle through to be selected and removed?
2.       How I can pass multiple channel names as one element to be selected and removed (see second element)?

Thanks in advance for any help anyone can provide.

Best wishes,
Laura Morett

Laura M. Morett
Hilibrand Postdoctoral Fellow
Yale Child Study Center
230 S. Frontage Rd.
New Haven, CT 06520

As of August 16, 2017:
Assistant Professor of Educational Psychology
Educational Neuroscience Initiative
University of Alabama
Box 870231
Tuscaloosa, AL 35487-0231

Email: laura.morett at yale.edu<mailto:laura.morett at yale.edu>
Phone: (203) 737-4586
Web: http://lauramorett.strikingly.com/<https://urldefense.proofpoint.com/v2/url?u=http-3A__lauramorett.strikingly.com_&d=CwMF-g&c=-dg2m7zWuuDZ0MUcV7Sdqw&r=7RydtjFxlOLitiTKeuyufwjZVnuS2cr0LD3ZBHQd6QA&m=hcKHc9qk081CzOBRcCJRuXs-41-8mLMuX9gmiw_QG_g&s=UQlF7t1IaNyCaJW5l4lvUXFZvEYnMtD2_GIYvnLLIaE&e=>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sccn.ucsd.edu/pipermail/eeglablist/attachments/20170405/882d542c/attachment.html>

More information about the eeglablist mailing list