```Date: Jan 18, 2013 5:14 PM
Author: Steven Lord
Subject: Re: using getfield() with a stuct array

"Bruce Elliott" <bruce.elliott@jhuapl.nospam.edu> wrote in message news:kdc3h7\$d6b\$1@newscl01ah.mathworks.com...> Is there any way to use getfield() on an array of structure and to get a > same-sized array of field values?>> In other words, I can do this:>> x = [myArr.F];>> to get an array with the values in the field F in my stuct array, myArr.>> This, however, does not work:>> x = getfield(myArr,'F');>> (Putting [] around anything on the right-hand-side does not help.)>> There's probably a good reason for this, but the documentation suggests > that x = getfield(S,'F') is equivalent to x = S.F, so I would have hoped > that I could do this.For _scalar_ struct arrays S, yes those are equivalent.http://www.mathworks.com/help/matlab/ref/getfield.html"value = getfield(struct, 'field'), where struct is a 1-by-1 structure, returns the contents of the specified field, equivalent to value = struct.field."and"If structure struct or any of the fields is a nonscalar structure, and you do not specify an Indx, the getfield function returns the values associated with the first index."Try:thefieldname = 'F';x = [myArr.(thefieldname)]You can use this like:F = struct('x', {2, 5, 17})z = F(mod([F.('x')], 2) == 1)This will extract the elements of F whose x fields contain odd values. From the way I constructed F you would expect z to contain two elements, and it does.-- Steve Lordslord@mathworks.comTo contact Technical Support use the Contact Us link on http://www.mathworks.com
```