(HELP) Assign char values from a structure to a double column vector

2 Ansichten (letzte 30 Tage)
Hi, everyone! :)
I hope you all are doing well.
I wanted to ask for help, since I am struggling a bit with a for loop.
I have this for loop:
AllEvents=[];
AllEvents=zeros(length(EEG.event),1);
for i=1:length(EEG.event)
AllEvents(i,1)=EEG.event(i).type;
end
However, every time I try to run it, I get the following error:
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-3.
The values of the variables (and/or structures, sorry I am a bit inexperienced) are:
  1. AllEvents = 1244x1 double
  2. EEG.event = 1 x 2444 struct array with fields: type, edftype, latency, urevent
  3. i (before running the loop) = 1x1244 double
  4. Mango (extra variable that I used to see the size of the EEG.event(i).type) = 1x3 char.
So far, I think the purpose of the loop is to assign the values of the EEG.event(i).type to the all events column vector, however I think it is affecting that EEG.event is a structure and the "type" field contains characters (they look like strings).
I was wondering, and I'd be truly grateful if someone could guide me with this (please).
Thank you for everything in advance.

Akzeptierte Antwort

Madhav Thakker
Madhav Thakker am 20 Mai 2021
Bearbeitet: Madhav Thakker am 20 Mai 2021
Hi Ana,
The error message clearly says the problem - Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-3.
AllEvents(i,1) is of size 1-by-1 and EEG.event(i).type is of size 1-by-3.
AllEvents(i,1)=EEG.event(i).type;
Can you try with something like this -
AllEvents=[];
AllEvents=char(length(EEG.event),3); % Changed the type and size so that each row is char array of size 1-by-3
for i=1:length(EEG.event)
AllEvents(i)=EEG.event(i).type; % assigning the type value to each row
end
  2 Kommentare
Stephen23
Stephen23 am 20 Mai 2021
Bearbeitet: Stephen23 am 20 Mai 2021
AllEvents(i,:) = EEG.event(i).type;
% ^^^ Correct indexing for assigning the 1x3 char vector to each row.
But this will fail as soon as you have a <type> character vector with two, four, five, or greater number of characters. I.e. this answer is not robust. If you want to write robust code, either use a cell array or a string array.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by