Output of struct.fieldname
조회 수: 2 (최근 30일)
이전 댓글 표시
"patient" is a 1x3 struct with "billing" being a fieldname. When I issue patient.billing, I get this:
>> patient.billing
ans =
127
ans =
28.500000000000000
ans =
23.300000000000001
Why is each value displayed separately? How do I collect the output into one variable?
댓글 수: 0
채택된 답변
Walter Roberson
2015년 12월 16일
[patient.billing]
You are seeing "structure expansion", which is similar to cell array expansion. The output of
patient.billing
is the same as if you had typed
patient(1).billing, patient(2).billing, patient(3).billing, .... patient(end).billing
as a comma separated list. These will be treated as if you had typed separate arguments, so if for example you had used
sum(patient.billing)
that would be the same as
sum(127, 28.5, 23.3)
and it would then try (and fail) to use the 28.5 as the dimension number that sum expects for its second argument.
[patient.billing]
works because [] is the list building operator, and with comma separated lists is equivalent to horzcat()
horzcat(127, 28.5, 23.3)
being well defined
댓글 수: 6
Walter Roberson
2015년 12월 16일
Which version are you using? The behaviour of expansion changed in R2015b.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!