Creating an array of structures
조회 수: 2 (최근 30일)
이전 댓글 표시
Hey Community,
I am trying to solve a problem where I want to assign a field within a structure to another structure that contains a cell array of structures. For example, lets say I have some structure, pet.dog.type that I want to use to create another structure. For example dog.name1 = pet.dog.type{1}.name, dog.name2 = pet.dog.type{2}.name. Is there a way to create a structure in this way? When I try to do this I keep getting an error "unable to perform assignment because dot indexing is not supported for variables of this type."
댓글 수: 0
채택된 답변
Image Analyst
2019년 1월 25일
When you say "pet.dog.type{1}.name," you're saying that one of the fields, "grand field" if you'd like rather than a child field, is actually a cell array. So if you did
ca = pet.dog.type{1};
you'd have a cell. ca would be a cell, NOT another structure. Cells cannot take fields. So you cannot do
v = ca.name;
because ca is a cell array and cell arrays do not take dot indexing - they have no field so they can't, it's impossible. So that's why you cannot say pet.dog.type{1}.name.
댓글 수: 5
Image Analyst
2019년 1월 25일
Well, I don't know, maybe I was wrong. But I DO know that it would be a lot easier for people to help you if you attached the structure in a .mat file rather than a screenshot.
Stephen23
2019년 1월 25일
편집: Stephen23
2019년 1월 25일
"When you say "pet.dog.type{1}.name," you're saying that one of the fields, "grand field" if you'd like rather than a child field, is actually a cell array. So if you did"
ca = pet.dog.type{1};
"you'd have a cell. ca would be a cell, NOT another structure."
This bold assertion is not supported by the MATLAB documentation, which clearly states that curly braces refer to the content of the cell array, not to the cell array itself:
The content of that cell could certainly be a structure with a field:
>> pet.dog.type{1}.name = 123;
>> pet.dog.type{2}.name = 222;
>> ca = pet.dog.type{1};
>> ca.name
ans = 123
>> size(ca)
ans = 1 1
>> class(ca)
ans = struct
It is not clear why Image Analyst stated that the content of a cell array must be another cell array. I don't find anything in the documenation to support this, and testing that exact code indicates that the content can indeed be a structure.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Structures에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!