how to get the specific member data from a struct array?

for example,
b=struct('name','JPEG','age','18') ;
c=repmat(b,3,1) ;
d=c.name;
c.name
why is the result of "c.name" different from the result of "d=c.name"?
how to get the member data directly from a struct array or matrix? such as c.name?
and another question, how to create a struct array or matrix directly just like zeros(2,3), but struct(2,3) doesn't work, so how?

 採用された回答

George
George 2016 年 11 月 4 日

0 投票

From the doc on struct
"When you access a field of a nonscalar structure, such as s.f, MATLAB® returns a comma-separated list. In this case, s.f is equivalent to s(1).f, s(2).f, s(3).f."
So your d = c.name is equivalent to
d = c(1).name, c(2).name, c(3).name.
Try
[d,e,f] = c.name
to see the difference. See here for more info on how to access data in a struct.
struct(2,3) doesn't work because it's trying to create a 1x1 struct array with field:2 and value:3. Field needs to be a char array.

1 件のコメント

xiao
xiao 2016 年 11 月 5 日
thank you! inspired by you, i try d = [c(1).name, c(2).name, c(3).name] and
d=[c.name] for a large struct to put the result together, but need to redivide
the result array. so maybe for loop is required.
and to create a struct matrix, maybe the for loop method or repmat way is needed.

サインインしてコメントする。

その他の回答 (1 件)

Alexandra Harkai
Alexandra Harkai 2016 年 11 月 4 日
編集済み: Alexandra Harkai 2016 年 11 月 4 日

0 投票

What c is is what is called a nonscalar struct array. Then "You cannot assign the list to a single variable with the syntax v = s.f because the fields can contain different types of data." as per the Documentation, so variable d gets only c(1).name, and hence they will be different.

2 件のコメント

xiao
xiao 2016 年 11 月 5 日
編集済み: xiao 2016 年 11 月 5 日
thx! so, for loop method is required to get the data of a struct array or matrix?
Alexandra Harkai
Alexandra Harkai 2016 年 11 月 7 日
Please do not change your question once it has been answered, it is preferred to start new one.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeStructures についてさらに検索

質問済み:

2016 年 11 月 4 日

コメント済み:

2016 年 11 月 7 日

Community Treasure Hunt

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

Start Hunting!

Translated by