How can I access part of my stucture by index?
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello
I have a structure like bellow
x.part1.vector=3;
x.part1.cost=4;
x.part2.vector=5;
x.part2.cost=6;
x.part3.vector=7;
x.part3.cost=8;
I want to access value of vector on part (for example 3).
How can I access this by index?
thanks for your help
댓글 수: 0
채택된 답변
Image Analyst
2015년 2월 13일
bkshn, try this and see if it's what you want:
% Define an array of structures.
x(1).vector=3;
x(1).cost=4;
x(2).vector=5;
x(2).cost=6;
x(3).vector=7;
x(3).cost=8;
% Access "part 3" with an index
index = 3;
output = x(index).vector
% Sum all "vector" fields for all indexes ("parts"):
outputSum = sum([x.vector])
댓글 수: 0
추가 답변 (1개)
Stephen23
2015년 2월 13일
편집: Stephen23
2015년 2월 14일
What you have defined is a scalar structure. This does not support indexing because there is only one structure element. You can access the data only using the fieldnames.
If you wish you use indexing, then you can create a non-scalar structure, which you can then use indexing with. There a multiple ways to create a non-scalar structure . Here are two ways of creating the same non-scalar structure:
>> A(1).data = 4;
>> A(2).data = 5;
>> A(3).data = 6;
OR
>> A = struct('data',{4,5,6});
>> A(2).data
ans = 5
Which means you can get the sum of all of the elements using this simple code:
>> sum([A.data])
ans = 15
참고 항목
카테고리
Help Center 및 File Exchange에서 Structures에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!