Creating variables in a foor loop using num2str

7 views (last 30 days)
title probably says it all. I want to create variables according to the i in the loop. I just don't even know if I can incorporate the function (I've already tried num2str, eval, evalc, sprintf) into variable definition. Below is a non-working code just to illustrate what I mean to do (hopefully). This example is just for 3 different variables but later on, I need to do this for about 60 more variables. I just cannot quite put my hand on the right formulation of the loop.
Thank you for any advices
%%% years_10 = [xvalues, yvalues]... n*2 matrices
for i=10:10:30
years_num2str(i) = readmatrix(sprintf('%d_years.csv',i);
Stephen23 on 8 Dec 2022
Edited: Stephen23 on 8 Dec 2022
The easy, simple, and very efficient approach is to use indexing into one array, e.g. a cell array or structure array.
Using indexing is shown in the MATLAB documentation:

Sign in to comment.

Accepted Answer

William Rose
William Rose on 23 Nov 2022
Edited: William Rose on 23 Nov 2022
[edit: change "v" to "s" in my description, to match the code]
for i=10:10:N, s.(strcat('a',num2str(i)))=i^2; end
a10: 100 a20: 400 a30: 900 a40: 1600 a50: 2500
creates a structure s with fields a10, a20, ..., a50. Each one equals a scalar. You could initialize each one to be a vector or array, if you prefer.

Sign in to comment.

More Answers (0)




Community Treasure Hunt

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

Start Hunting!

Translated by