how can i assign a variable existing in the workspace to a char ?
2 ビュー (過去 30 日間)
古いコメントを表示
Hello everyone,
how can i assign a variable existing in the workspace to a char ?
For example, in my workspace i have: label = 1 (double)
in a script i have a variable X = 'label' (char), so i want it to take the value of the variable label so that X = label = 1.
Is it possible to do such thing ?
Thanks alot for your help
0 件のコメント
採用された回答
Fangjun Jiang
2019 年 2 月 26 日
編集済み: Fangjun Jiang
2019 年 2 月 26 日
label=1;
X='label';
y=evalin('base',X);
And wait for comments critizing this method.
2 件のコメント
Jan
2019 年 2 月 27 日
Here are the expected comments, which critize this method: Don't do this, because it increases the complexity of the code even further. See TUTORIAL: How and why to avoid Eval
:-)
Fangjun Jiang
2019 年 2 月 27 日
Ok, let's do it the right way. Assume the following data in an Excel file. Use table so any value can be referenced by T{X,Y}
name value threshold
label1 1 10
label2 2 20
label3 3 30
T=readtable('book1.xlsx','ReadRowNames',true)
X='label2';
Y='threshold';
T{X,Y}
その他の回答 (1 件)
Jan
2019 年 2 月 26 日
Use a struct and dynamic field names:
% In the current workspace:
Data.label = 1;
Result = YourFunction(Data);
function Result = YourFunction(Data)
Field = 'label';
Result = (Data.(Field) + 1) ^ 2;
end
Remember, that it is a DON'T to access variables dynamically: See TUTORIAL: How and why to avoid Eval
But fieldnames are efficient and clean.
5 件のコメント
Jan
2019 年 2 月 26 日
@Daher: "I managed to extract all the variables into my workspace" - I assume the problem is here. It would be much easier to import the strings as a list and the data as a matrix. Then the access is easy: with the strcmp you find the corresponding row directly.
Fangjun Jiang's idea hits the point also: With importing the data as a table object, the access of the named rows is trivial also. Importing the data as a struct is equivalent, but more handmade.
参考
カテゴリ
Help Center および File Exchange で Axis Labels についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!