How to derive a variable name from a variable?

조회 수: 2 (최근 30일)
Rightia Rollmann
Rightia Rollmann 2017년 2월 7일
편집: Jan 2017년 2월 8일
How to derive a variable name from a variable?
A = [5 6 7 8];
B = ‘A’;
A(1) % this works and return the first element of A which is 5
B(1) % this doesn’t work like the code above
  댓글 수: 4
Rightia Rollmann
Rightia Rollmann 2017년 2월 7일
What I want to do is to access the first column and then the second column of a 5-by-7 matrix which is the value of a field named B. B is the third field of struct A. How can I do it dynamically best?
Adam
Adam 2017년 2월 8일
If B is a field of A why are you trying to create a variable B that represents the whole of A.
Just A.( 'B' ) would give what you want. Fields are not really ordered in a struct, at least not for general usage.

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

채택된 답변

Stephen23
Stephen23 2017년 2월 7일
편집: Stephen23 2017년 2월 7일
Although often loved by beginners, dynamically accessing variable names is not a robust, fast, or good way to write code. It makes code hard to read, slow, difficult to debug, and has other disadvantages too:
If you really need to access the names dynamically, then consider using a structure: it is fast and easy to access structure field names dynamically:
S.A = [5,6,7,8];
x = 'A';
S.(x)

추가 답변 (2개)

Star Strider
Star Strider 2017년 2월 7일
MATLAB does not recognise char(0145) and char(0146) as quotation marks in code.
A = [5 6 7 8];
B = 'A' % Sets ‘B’ TO Be Character ‘A’
B = A
B(1)
produces:
B =
A
B =
5 6 7 8
ans =
5

Jan
Jan 2017년 2월 8일
편집: Jan 2017년 2월 8일
According to your comment, which is another problem than the original question:
A.B(:, 1:2)

카테고리

Help CenterFile Exchange에서 Dynamic System Models에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by