An open exchange for the MATLAB and Simulink user community |
Hosted by The MathWorks |
|
| Related Topics |
| New Products | Support | Documentation | Training | Webinars | Jobs | Newsletters |
| Problems? Suggestions? Contact us at files@mathworks.com | © 1994-2008 The MathWorks, Inc. Trademarks Privacy Policy |
It’s easier to create vector s by:
s = [people.SimmNum];
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]
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
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{:};