Filter a structure by a value of a field
17 views (last 30 days)
Show older comments
Hi All,
I have data in the following structure called "recEv".
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/193152/image.png)
.
I would like to find the values of another matrix called cluster_class(size: n x 2) that fall between the first and last eegoffset number corresponding to each unique list value. So, for example, I would like to find the values in the cluster class matrix that fall between (225035 - 228285), (323831 - 327527), (424105 - 429244), (531709 - 533974) etc. I would like my output matrix to stay the size (n x 2).
I've tried putting the unique list values into a variable and looping through recEv, however I have been largely unsuccessful. Any help would be much appreciated!!
Thank you,
PK
2 Comments
Jan
on 4 Aug 2018
Please post some relevant inputs. It is not clear if this is a struct array or a scalar struct containing vectors. You did not mention, what the data of the matrix cluster_class are and what you want as output exactly.
Answers (1)
Bob Thompson
on 6 Aug 2018
Hmmm, just gonna wing it and see if this is correct.
for k = 1:max(recEV(:).list);
special = cluster_class(cluster_class(:,2)>=min(recEV(:).eegoffset(recEV(:).list==k))&cluster_class(:,2)<=max(recEV(:).eegoffset(recEV(:).list==k)),:);
end
Basically, it just loops through each value of list and attempts to use logic indexing to leave you with cluster_class rows which have a second value that falls within the range of eegoffset. Probably won't work first try, but thought it was kind of fun to make.
0 Comments
See Also
Categories
Find more on Data Type Identification in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!