Creating variable whose name is part of a string

조회 수: 1 (최근 30일)
Dina Irofti
Dina Irofti 2013년 6월 13일
I have a .mat file as an input for my function and I know that it contains a struct, but I don't know exactly the name of that struct (is different from file to file).
>> s = load('myFile');
>> name = fieldnames(s)
name =
unknown
where unknown depends on the .mat file input I have.
How can I access s.unknown.X? (I know for sure that unknown have an X and Y field, whatever the input might be)

채택된 답변

Robert Cumming
Robert Cumming 2013년 6월 13일
Basically - dont use eval - its bad! use dynamic fieldnames instead! :)
  댓글 수: 4
Jan
Jan 2013년 6월 13일
I agree with Robert: Do not create variables dynamically. It would work, but increase the complexity of the code without any real benefit, slows down Matlab by impeding the JIT acceleration, and makes debugging much harder.
Dina Irofti
Dina Irofti 2013년 6월 13일
You are right, it is better to use dynamic fieldnames. My solution is:
s = load('myFile');
unknown = fieldnames(s);
unknown = unknown{1};
Now I can access
s.(unknown).X

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

추가 답변 (1개)

Vishal Rane
Vishal Rane 2013년 6월 13일
You could try this:
eval([name, ' = 10'])

카테고리

Help CenterFile Exchange에서 Structures에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by