Single-Colon Indexing for Struct Variables

10 visualizzazioni (ultimi 30 giorni)
I have an array of structure variable defined as:
my_data(100)=struct('x',[],'y',[]);
x and y are vectors containing coordinates. I am trying to have all the x components of all the elements of the array. I used:
my_data_x_all=my_data(:).x;
But it is not a single variable. Only my_data(1).x is assigned to my_data_x_all and the rest is returned in the MATLAB variable "ans". What am I missing here that I cannot assign all the x components of 100 elements of my_data in the single array my_data_x_all?

Risposta accettata

Matt Fig
Matt Fig il 2 Giu 2011
Just to make sure I understand what you did, does this example correctly model your issue?
my_data(3)=struct('x',[],'y',[]);
my_data(1).x = 6;
my_data(2).x = 9;
my_data(3).x = 10;
my_data_x_all = [my_data(:).x]
my_data_x_all =
6 9 10
By the way, this is called the comma separated list behavior of structs. Cell arrays can behave similarly.
  5 Commenti
AP
AP il 2 Giu 2011
% ******************************************************************
% ******************************************************************
% ******************************************************************
% ******************************************************************
probably defining a struct is not the best option and maybe cell arrays are better for this job. What do you think?
Walter Roberson
Walter Roberson il 2 Giu 2011
arrayfun(@(S) S.f(:,2), my_data)

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Multidimensional Arrays in Help Center e File Exchange

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by