Stuart’s MATLAB Videos

Watch and Learn

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the Original version of the page.

MATLAB Basics: Array of structures vs Structures of arrays 4

Posted by Doug Hull,

This short video covers the difference between a “structure of arrays” and an “array of structures”.

4 CommentsOldest to Newest

Tom replied on : 2 of 4
This and Emil's comment were quite helpful to me. To take this one step further, one advantage of Arrays of Structures would be the ability to have vectors of different lengths for each numerical part, and a cell array of names of different lengths for each name part. For example: people(1).name='Erin' people(2).name={'Joan' 'Carla'} people(1).sim=44 people(2).sim=[561 49]
Doug replied on : 3 of 4
Emil, Yes, you are correct. I can not believe I over looked that. There are so many ways to do certain things in MATLAB. Doug
Ryan Gray replied on : 4 of 4
If you have an array that you want to assign to a field across a structure array, you can do this: [structArray(:).fieldname] = deal(num2cell(array)) Of course, the length of array should be the same as the length of structArray, but if structArray doesn't exist yet, then you can do: [structArray(1:length(array)).fieldname] = deal(num2cell(array)) If array is already a cell array, you can avoid using both deal and num2cell (although they will still work) and use: [structArray(:).fieldname] = array{:} or [structArray(1:length(array)).fieldname] = array{:} An example, modifying the struct array 'people' from the video: names = {'Larry','Moe','Curly'}; [people(:).name] = names{:};