How to create multiple strings

16 ビュー (過去 30 日間)
Chao Zhang
Chao Zhang 2021 年 5 月 27 日
コメント済み: Chao Zhang 2021 年 5 月 27 日
The following code, I use eval to create multiple similiar matrixs
num=input('Please enter the number of rock types:');
%Setup initial ore and waste matrix respectively
for i = 1 : num
eval(['M_ORE',num2str(i), ' =zeros(R1,C1)']);%multiple ore matrix
end
But I do not know how to create multiple strings
For example, the initial string is 'rn_mill_ton'
I want to input n=5, and the multiple strings such as 'r1_mill_ton', 'r2_mill_ton','r3_mill_ton','r4_mill_ton', and 'r5_mill_ton' are created.
Therefore, how to do that?
Thanks!

採用された回答

Jan
Jan 2021 年 5 月 27 日
Do not create variables dynamically using eval . See: TUTORIAL: How and why to avoid Eval
Hiding indices in the names of variables makes it cruel to access them later on. Use an array instead:
n = 5;
C = cell(1, n)
for k = 1:num
C{k} = sprintf('r%d_mill_ton', k);
end

その他の回答 (1 件)

Adam Danz
Adam Danz 2021 年 5 月 27 日
編集済み: Adam Danz 2021 年 5 月 27 日
Don't use eval() at all. 💀💣
Since all of the variables you're dynamically creating are the same size (R1xC1) you're better off creating a 3D array,
num=input('Please enter the number of rock types:');
M_ORE = zeros(R1,C1,num);
So to get the matrix for rock type number j,
M_ORE(:,:,j)
  1 件のコメント
Chao Zhang
Chao Zhang 2021 年 5 月 27 日
Thank you!

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

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by