Converting string to integer - indexing and multiple trials
20 views (last 30 days)
I have 120 trials in one Matlab file, all trials are separate within the file and look similar to that of trial1.mat (attached). I am importing this Matlab file into Python and indexing into the correct spot with
cue_times = trial(['BehavioralCodes']['CodeTimes'], dtype=int)
**I know this is not a Python platform, and that is not my question, I am merely explaining what I'm doing when I get the error I am getting.**
I get the error that the list indices must be integers or slices, not str
I need to convert 'CodeTimes' within 'BehavioralCodes' in each trial (each trial is saved individually like trial1) from a string to an integer.
I have tried:
code_times = str2num('CodeTimes') but that gives me an empty array so I am definitely doing something wrong.
I am not sure how to index into the correct space and then to include all trials (perhaps a for loop?). Any help would be greatly appreciated!
Askic V on 5 Mar 2023
Edited: Askic V on 5 Mar 2023
If you look into your data in Matlab, you will see that CodeTimes is actually an array of doubles and not strings:
cc = load (websave('trial1.mat', 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/1315225/trial1.mat'));
code_times = cc.Trial1.BehavioralCodes.CodeTimes;
code_numbers = cc.Trial1.BehavioralCodes.CodeNumbers;
vpa(code_times(1:5),6) % show first 5 elements
% check type
In Matlab you can use function round to round to the neareast integer:
code_times_int = round(code_times);
code_numbers_int = round(code_numbers);
% show first 5 elements
If round is not what you want, then check