필터 지우기
필터 지우기

Creating 'n' matrices with each one with 'n' in its name

조회 수: 3 (최근 30일)
Paul Barrette
Paul Barrette 2023년 9월 17일
편집: Paul Barrette 2023년 9월 20일
I am building 'n' matrices line by line:
YEAR1 = zeros(DATE_RANGE(1,3));
YEAR2 = zeros(DATE_RANGE(2,3));
YEAR3 = zeros(DATE_RANGE(3,3));
...
To avoid manually entering each line, I would like to use a looping method, e.g.,
for n=1:10
YEARn = zeros(DATE_RANGE(n,3));
end
My searches bring me to the concept of 'dynamic access' (eval), which is not recommended. But am not sure if this applies to my case.
  댓글 수: 1
Stephen23
Stephen23 2023년 9월 18일
편집: Stephen23 2023년 9월 20일
"To avoid manually entering each line, I would like to use a looping method"
That is a good approach. The best approach is to use arrays.
"My searches bring me to the concept of 'dynamic access' (eval)"
That is a very bad approach.
"But am not sure if this applies to my case."
That advice definitely applies to your case. Your approach using dynamic variable names is not recommended: your approach forces you into writing slow, complex, inefficient, obfuscated, buggy code that is hard to debug:
So far there is no obvious reason why you could not just use basic matrices or arrays for your data, just like MATLAB is designed for. If all of those arrays are the same size then a basic 3D array would suffice.
Note that calling ZEROS with one input argument often produces unexpected results.

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

채택된 답변

Torsten
Torsten 2023년 9월 17일
이동: Torsten 2023년 9월 17일
YEAR{n} = zeros(DATE_RANGE(n,3));
  댓글 수: 2
Dyuman Joshi
Dyuman Joshi 2023년 9월 17일
That is, using Cell arrays to store matrices of different sizes.
@Paul Barrette, Using Cell arrays is also the first alternative mentioned in the thread you have linked -
Paul Barrette
Paul Barrette 2023년 9월 20일
편집: Paul Barrette 2023년 9월 20일
A 3D array, as suggested by @Stephen23, was my first idea, but the arrays are of slightly different size. Cell arrays is the way to go - I've never used them, but now is the time. Thanks all. And sorry for not searching better and not providing adequate explanations (I wil do better next time).

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

추가 답변 (1개)

Walter Roberson
Walter Roberson 2023년 9월 17일
See https://www.mathworks.com/matlabcentral/answers/2020976-i-want-to-store-the-vector-from-each-for-loop-iteration-how-can-i-do-this#answer_1310391 for sample code that iterates through variable names, a, b, c, d, e, ... z, aa, ab, ac, ...

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by