Extracting index from cell array

10 visualizzazioni (ultimi 30 giorni)
Khalif
Khalif il 31 Ago 2024
Commentato: Umar il 1 Set 2024
I'm currently trying to extract the indexes from a cell array of an EEG experiment and I used the ismember function to line up with the labels and extract the index number of the bad channels, but it didn't give me the results instead of just the order of the channels. Is there any solution to find the index to the corresponding channels?
{EEG.chanlocs.labels}
ans =
1×64 cell array
Columns 1 through 9
{'0Z'} {'1Z'} {'2Z'} {'3Z'} {'4Z'} {'1L'} {'1R'} {'1LB'} {'1RB'}
...
bad = split(string(dataQC(1,5))).'
1×6 string array
"1RC" "2RB" "3LD" "10L" "9L" "4LD"
[~, numchan] = ismember({EEG.chanlocs.labels}, bad)

Risposta accettata

Khalif
Khalif il 1 Set 2024
bad = split(string({'1RC', '2RB', '3LD', '10L', '9L', '4LD'}).';
bad = convertStringsToChars(bad);
[badchan, numchan] = ismember({EEG.chanlocs.labels}, bad);
badchan = find(badchan);

Più risposte (1)

Umar
Umar il 1 Set 2024

Hi @Khalif Shirad,

To address your query regarding, “I'm currently trying to extract the indexes from a cell array of an EEG experiment and I used the ismember function to line up with the labels and extract the index number of the bad channels, but it didn't give me the results instead of just the order of the channels. Is there any solution to find the index to the corresponding channels?”

Please see my response to your comments below.

The core of the solution lies in your ismember function, which is employed to find the indexes of the bad channels within the EEG channel labels. The syntax [~, numchan] = ismember(bad, EEG.chanlocs.labels); effectively checks each element of the bad array against the EEG.chanlocs.labels array. The tilde (~) is used to ignore the first output of ismember, which indicates whether each element of bad is found in EEG.chanlocs.labels. Finally, the resulting indexes of the bad channels are displayed using the disp function. This output provides a clear view of which channels are deemed problematic based on their corresponding indexes in the original EEG channel labels array. Here is the updated code,

% Sample EEG channel labels
EEG.chanlocs.labels = {'0Z', '1Z', '2Z', '3Z', '4Z', '1L', '1R', '1LB', '1RB',
...'1RC', '2RB', '3LD', '10L', '9L', '4LD', '5Z', ...'6Z', '7Z', '8Z', '9Z',   '10Z', '11Z', '12Z', ...'13Z', '14Z', '15Z', '16Z', '17Z', '18Z', ...
                      '19Z', '20Z', '21Z', '22Z', '23Z', '24Z', ...
                      '25Z', '26Z', '27Z', '28Z', '29Z', '30Z', ...
                      '31Z', '32Z', '33Z', '34Z', '35Z', '36Z', ...
                      '37Z', '38Z', '39Z', '40Z', '41Z', '42Z', ...
                      '43Z', '44Z', '45Z', '46Z', '47Z', '48Z', ...
                      '49Z', '50Z', '51Z', '52Z', '53Z', '54Z', ...
                      '55Z', '56Z', '57Z', '58Z', '59Z', '60Z', ...
                      '61Z', '62Z', '63Z'};
% Bad channels to be identified
bad = split(string({'1RC', '2RB', '3LD', '10L', '9L', '4LD'})).';
% Find the indexes of bad channels
[~, numchan] = ismember(bad, EEG.chanlocs.labels);
% Display the results
disp('Indexes of bad channels:');
disp(numchan);

Please see attached.

Hope this helps resolve your problem. Please let me know if you have any further questions.

  2 Commenti
Khalif
Khalif il 1 Set 2024
Thank you for the help. I've found the solution by replacing the tilde (~) with a variable output and using the find function.
bad = split(string({'1RC', '2RB', '3LD', '10L', '9L', '4LD'}).';
bad = convertStringsToChars(bad);
[badchan, numchan] = ismember({EEG.chanlocs.labels}, bad);
badchan = find(badchan);
Umar
Umar il 1 Set 2024
Hi @Khalif Shirad,
Thank you for sharing your solution with me. I appreciate your initiative in replacing the tilde (~) with a variable output and utilizing the find function. It’s always gratifying to see effective problem-solving in action. If you have any further questions or if there’s anything else I can assist you with, please don’t hesitate to reach out.

Accedi per commentare.

Categorie

Scopri di più su EEG/MEG/ECoG in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by