Doug Hull, MathWorks
(Originally posted on Doug's MATLAB Video Tutorials blog.)
Recently a MATLAB user asked me how to make it possible to work with an array of structures in such a way that she could filter the array of structures and then combine the remaining fields. Once combined she would run arbitrary processing functions on this combined data.
This generalized architecture allows her to not use switch case and other flow control. The strings that represent the fields of interest could come from a GUI making her GUI able to process in many arbitrary and customizable ways.
Here is the code from the post:
clear
clc
s(1).condition = 1;
s(2).condition = 1;
s(3).condition = 2;
s(4).condition = 2;
s(1).velocity = [11:21];
s(2).velocity = [22:32];
s(3).velocity = [33:43];
s(4).velocity = [44:54];
s(1).acceleration = [111:121];
s(2).acceleration = [122:132];
s(3).acceleration = [133:143];
s(4).acceleration = [144:154];
fieldToFilterBy = 'condition';
valueToFilterBy = 2;
fieldToProcess = 'acceleration';
processingFunction = @mean;
listOfFilterValues = [s.(fieldToFilterBy)];
vi = (listOfFilterValues == valueToFilterBy)
filteredStructure = s(vi)
mergedFieldOfInterest = [filteredStructure(:).(fieldToProcess)]
processedFilteredData = feval(processingFunction, mergedFieldOfInterest)
Recorded: 17 Apr 2013
Featured Product
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
This website uses cookies to improve your user experience, personalize content and ads, and analyze website traffic. By continuing to use this website, you consent to our use of cookies. Please see our Privacy Policy to learn more about cookies and how to change your settings.