field name to string

35 views (last 30 days)
Marcus
Marcus on 11 Nov 2025 at 13:56
Answered: Walter Roberson on 11 Nov 2025 at 19:18
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 Comments
dpb
dpb on 11 Nov 2025 at 15:12
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 on 11 Nov 2025 at 16:12
OK, thanks for the background info.

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 11 Nov 2025 at 19:18
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.

Categories

Find more on Programming Utilities in Help Center and File Exchange

Tags

Products


Release

R2024b

Community Treasure Hunt

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

Start Hunting!