Creating variables in a foor loop using num2str

Hi,
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
years_10=readmatrix('10_years.csv');
years_20=readmatrix('20_years.csv');
years_30=readmatrix('30_years.csv');
for i=10:10:30
years_num2str(i) = readmatrix(sprintf('%d_years.csv',i);
end

댓글 수: 2

Why do you think this is necessary? Why not use a cell array instead?
Stephen23
Stephen23 2022년 12월 8일
편집: Stephen23 2022년 12월 8일
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:

댓글을 달려면 로그인하십시오.

 채택된 답변

William Rose
William Rose 2022년 11월 23일
편집: William Rose 2022년 11월 23일
[edit: change "v" to "s" in my description, to match the code]
N=50;
for i=10:10:N, s.(strcat('a',num2str(i)))=i^2; end
disp(s)
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.

댓글 수: 5

The tutorial is by @Stephen23
Mady
Mady 2022년 12월 7일
Thank you @William Rose for quite a handy solution. The tutorial about Dynamic variable naming is very useful, lots of new informations :)
@Jiri Kovar, you're welcome.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Workspace Variables and MAT Files에 대해 자세히 알아보기

제품

릴리스

R2019a

질문:

2022년 11월 23일

편집:

2022년 12월 8일

Community Treasure Hunt

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

Start Hunting!

Translated by