# Doug's MATLAB Video Tutorials

## April 17th, 2013

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) 

### 2 Responses to “Generalizing the access to an array of structures in MATLAB”

1. Brad Stiritz replied on :

Doug, this video is not easy to follow. I feel it would be an improvement if your longer commands could completely fit into view, so you don’t have to scroll L-R.

Also, particularly with advanced topics, it would be helpful if you could please publish the critical code segment in your post so that viewers could take it all in visually & not have to go back through the video. Thanks for your consideration..

2. Doug replied on :

You are right. I have added the code to the post here. These were unusually long commands in this code.

Thanks for the tip!
Doug

 Name (required) E-mail (required, will not be published) Website (optional) Spam protection (required): What is 3 + 6 ?

Wrap code fragments inside <pre> tags, like this:

<pre class="code">
a = magic(3);
sum(a)
</pre>


If you have a "<" character in your code, either follow it with a space or replace it with "&lt;" (including the semicolon).

Doug Hull is a proud MathWorker who is on a mission to help you with MATLAB.

These postings are the author's and don't necessarily represent the opinions of MathWorks.