How to change a variable name without changing the value itself?

65 ビュー (過去 30 日間)
Antonio Victoria
Antonio Victoria 2023 年 6 月 10 日
回答済み: Antonio Victoria 2023 年 6 月 13 日
I've got some variables like these: OutArray, OutArray2 and so on...
I need to refresh the base name OutArray adding the "1", "2", "3"... taking advantage of the loop iterator, how may I do it?
I have MATLAB R2023A

採用された回答

Image Analyst
Image Analyst 2023 年 6 月 10 日
編集済み: Image Analyst 2023 年 6 月 10 日
Just do them one at a time, reassiging existing variables to variables with your new, preferred names. Then you can clear the old-named variables from memory with clear if you want.
newname1 = OutArray;
newName2 = OutArray2;
newName3 = OutArray3;
newName4 = OutArray4;
clear('OutArray', 'OutArray2', 'OutArray3', 'OutArray4');
Surely you don't have more than a handful of those variables. If you do (big mistake), then see this
for reasons why not to do that.
If you have tons of variable names because they are columns of a big table you read in from a file, then consider converting them all to a 2-D array with the table2array function.

その他の回答 (4 件)

Star Strider
Star Strider 2023 年 6 月 10 日
Save them as elements of a cell array instead, when you first create them.

chicken vector
chicken vector 2023 年 6 月 10 日
This is in general not recommend because is prone tu bugs and affects code readibility.
If you really want to do this anyway, have a look at genvarname and eval.

claudio
claudio 2023 年 6 月 10 日
編集済み: claudio 2023 年 6 月 10 日
The easy way
variables = ["OutArray" "OutArray2" "OutArray3"];
for kk = 1:numel(variables)
eval(variables(kk) + string(kk) + " = eval(variables(kk))");
clear(variables(kk))
end
A more refined way
variables = string(who); % retrieve the name of the variables from workspace
% without having to write them by hand
for kk = 1:numel(variables)
eval(variables(kk) + string(kk) + " = eval(variables(kk))");
clear(variables(kk))
end
  1 件のコメント
John D'Errico
John D'Errico 2023 年 6 月 10 日
編集済み: John D'Errico 2023 年 6 月 10 日
Neither of those ways is at all refined. And neither of them are a remotely good idea. They will lead to crappy, buggy, and SLOW code, when a simple array was all that was ever needed. Is there even a remotely good reason to recommend this? NO.

サインインしてコメントする。


Antonio Victoria
Antonio Victoria 2023 年 6 月 13 日
Thank you all for your answers!

カテゴリ

Help Center および File ExchangeMATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by