(HELP) Assign char values from a structure to a double column vector
3 次查看(过去 30 天)
显示 更早的评论
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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/614160/image.jpeg)
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 个评论
采纳的回答
Madhav Thakker
2021-5-20
编辑:Madhav Thakker
2021-5-20
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 个评论
Stephen23
2021-5-20
编辑:Stephen23
2021-5-20
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.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!