I have read this article: https://de.mathworks.com/help/matlab/ref/inputname.html where it is stated that dot indexing aka struct fields are not supported by the function inputname which makes this function for my usecase basically worthless. Arte there any other options to hand over a struct member and get the full name (aka a.b)?

댓글 수: 4

Torsten
Torsten 2025년 11월 11일
편집: Torsten 2025년 11월 11일
Can you give an example for what exactly you want to achieve ?
Something like
a.b = 12;
getname1(a.b);
ans = 0×0 empty char array
function getname1(x)
inputname(1)
end
and inputname(1) should give "a.b" ?
If yes: the only way I see is to pass the struct name together with the struct variable to the function in question.
a.b = 12;
name = 'a.b';
getname2(a.b,name)
name_x = 'a.b'
function getname2(x,name_x)
name_x
end
dpb
dpb 2025년 11월 11일
Certainly no documented ones, no.
a.b = 12;
getname1(a);
ans = 1×1 cell array
{'b'}
function getname1(x)
name=inputname(1);
fieldnames(x)
end
Some machinations like the above would be the only other alternative I would see, also. The callee would somehow have to know which of the fields is the one of interest which is essentially the equivalent.
As the doc explains (and one can observe if set a breakpoint and examine the call stack structure), when the argument is a reference to the memeber of a struct, the information simply isn't available.
Marcus
Marcus 2025년 11월 11일
OK, thanks for the background info.

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2025년 11월 11일

0 개 추천

When MATLAB encounters a.b in a calling sequence, then the "a" portion gets dereferenced, and the anonymous memory for "b" gets passed in. MATLAB never keeps track of where the anonymous memory came from. There is no hope for getting back the name "a.b" in this case.
As far as MATLAB is concerned, it is having to compute the field a.b, just as surely as it would have to compute the value for "A + 1" passed in.

카테고리

도움말 센터File Exchange에서 Programming Utilities에 대해 자세히 알아보기

제품

릴리스

R2024b

태그

질문:

2025년 11월 11일

답변:

2025년 11월 11일

Community Treasure Hunt

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

Start Hunting!

Translated by