(HELP) Assign char values from a structure to a double column vector
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ana Maldonado Gómez
am 11 Mai 2021
Kommentiert: Ana Maldonado Gómez
am 17 Jun. 2021
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:
- AllEvents = 1244x1 double
- EEG.event = 1 x 2444 struct array with fields: type, edftype, latency, urevent
- i (before running the loop) = 1x1244 double
- 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.
0 Kommentare
Akzeptierte Antwort
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
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.
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!