# How can I find the threshold for a structure array?

2 views (last 30 days)
Fabio Castro on 6 Apr 2016
Commented: Fabio Castro on 8 Apr 2016
Hello all,
I want to find the threshold for various trials, contained in the structure "Target_Tr.". I have previously calculated the max value (X and Y) of the baseline. I would like to have as result a structure array containing the values after the threshold. I wrote this code, but the system gives me back the error message "Undefined operator '>' for input arguments of type 'struct'. What am I doing wrong?
Thank you very much
clear a
for a = 1:length(fields_trials)
Threshold_Target_X.(['a_' int2str(a)])=find([Target_Tr.(fields_trials{a})]>Target_Max_Y);
end

Orion on 6 Apr 2016
Hi,
I tried this code and it works :
Target_Tr.s1 = rand(10,1);
Target_Tr.s2 = rand(10,1);
fields_trials = fieldnames(Target_Tr);
Target_Max_Y = 0.6;
clear a
for a = 1:length(fields_trials)
Threshold_Target_X.(['a_' int2str(a)]) = find([Target_Tr.(fields_trials{a})]>Target_Max_Y);
end
Does your structure Target has only "direct" subfields ( Target_Tr.s1 , Target_Tr.s2,...) ?
Because if you have somethig like
Target_Tr.s3.s1 = rand(10,1); % subfield of field
then the error message makes sense.

Fabio Castro on 6 Apr 2016
Hello, and thank you for the answer.
The structure array "Target_Tr" contains only direct subfield, that is Target_Tr.a_1, Target_Tr.a_2, etc.
I have tried the code that you wrote and doesn't work. Do you know what else could be the problem?
Thank you very much!
Orion on 6 Apr 2016
That's really weird, because I just retried my code and it works.
If you first do a clear all, does this code work ?
Fabio Castro on 8 Apr 2016
Hello.
I don't know why, but if I close and re start the matlab, then it works.
Thank you very much for the help!