MATLAB Answers

How can I find the threshold for a structure array?

2 views (last 30 days)
Fabio Castro
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

  0 Comments

Sign in to comment.

Accepted Answer

Orion
Orion on 6 Apr 2016
Hi,
Without knowing what your data looks like, it's hard to answer.
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.

  3 Comments

Fabio Castro
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
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
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!

Sign in to comment.

More Answers (0)

Sign in to answer this question.


Translated by