How to create multiple strings

11 Ansichten (letzte 30 Tage)
Chao Zhang
Chao Zhang am 27 Mai 2021
Kommentiert: Chao Zhang am 27 Mai 2021
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!

Akzeptierte Antwort

Jan
Jan am 27 Mai 2021
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

Weitere Antworten (1)

Adam Danz
Adam Danz am 27 Mai 2021
Bearbeitet: Adam Danz am 27 Mai 2021
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)

Community Treasure Hunt

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

Start Hunting!

Translated by