Reference to non-existent field error

2 views (last 30 days)
zexi Leong
zexi Leong on 7 Jan 2020
Edited: Stephen23 on 7 Jan 2020
Hi there, I am new at MATLAB and currently trying to extract data from a particular subfolder from every subject and to put it all into an excel file
basically i want to retrieve mean times which is calculated from taking the mean of values in delay series variable (location: parent_directory > containing many subject folders labelled img0001, img0002 etc > each subject folder contains a .mat file called stopchoicert.mat > variable delayseries can be found here)
D = 'C:\Users\extlzx\Documents\MATLAB\Behavioural Data and script\behavioural data\';
S = dir(fullfile(D,'img*'));
for k = 264 %to access folder for subject number 264, usually i would put this as a loop from 1 to 300 but just for testing i put 264
SSRT = fullfile(D,S(k).name,'stopchoicert.mat');
if exist(SSRT,'file')==2;
T = load(SSRT);
meanssd = mean(delayseries); %delayseries is a 160X160 double(?) but only the first column contains value of interest. the rest are zeros. hence i took the mean and specified the first column and first row of meanssd which would contain my value that i wish to extract
S(k).data = T.meanssd(1,1);
end
end
writetable(struct2table(S), 'extracteddata2.xlsx')
Why do i get the error of:
Reference to non-existent field 'meanssd'.
Error in ssrtscript (line 8)
S(k).data = T.meanssd(1,1);
am I not creating new variable meanssd @ line 8? I do see variable meanssd in my workspace though. Encountered similar problems before but have been unable to resolve
  4 Comments
zexi Leong
zexi Leong on 7 Jan 2020
Ah I think I understand but I am not too sure if i am on the right track.
D = 'C:\Users\extlzx\Documents\MATLAB\Behavioural Data and script\behavioural data\';
S = dir(fullfile(D,'img*'));
for k = 264
SSRT = fullfile(D,S(k).name,'stopchoicert2.mat');
if exist(SSRT,'file')==2;
T = load(SSRT);
meanssd = mean(delayseries);
T = struct('mssd',[])
T.mssd = meanssd(1,1)
S(k).data = T.mssd;
end
end
writetable(struct2table(S), 'extracteddata2.xlsx')
Would this make more sense?
Stephen23
Stephen23 on 7 Jan 2020
Edited: Stephen23 on 7 Jan 2020
"Would this make more sense?"
Not really, as now you load some file data into a structure T, which you then totally ignore (because that variable is never accessed, and it is completely reallocated two lines later).
As you have not explained what data you expect to be in S, it is hard to make any suggestions what you should be doing. Perhaps you are trying to do something like this:
T = load(SSRT);
V = mean(T.delayseries);
S(k).mssd = V(1,1);

Sign in to comment.

Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!