matrix creation from a loop
이전 댓글 표시
Hello all,
I would like to create 60 vector columns of zeros (6964,1) called lat_01_days, lat_02days, lat_03_days until 60. I know I could write them one by one but if i know How to create a loop to create them it would be better also for future research. Can someone help mep lease?
regards
Jonathan
댓글 수: 2
Stephen23
2020년 9월 17일
"I would like to create 60 vector columns of zeros (6964,1) called lat_01_days, lat_02days, lat_03_days until 60."
Numbering variables like that is a sign that you are doing something wrong.
Forcing meta-data (e.g. pseudo-indices) intoe variable names is a sign that you are doing something wrong.
"I know I could write them one by one ..."
Ouch!
"...but if i know How to create a loop to create them it would be better also for future research"
In fact what "would be better also for future research" is to avoid numbered variables entirely:
Jonathan Demmer
2020년 9월 17일
답변 (3개)
Walter Roberson
2020년 9월 17일
2 개 추천
if i know How to create a loop to create them it would be better also for future research.
Our long experience is that it would make your future research worse instead of better.
Stephen23
2020년 9월 17일
The simplest and most efficient solution is to just create one matrix:
lat = zeros(6964,60)
which you can then trivially access using indexing. There is no point in making it more complex than that.
The two other answers are a more correct way of doing it. There is no need to create this many variables in your workspace. However, if you must...
You should use a structure instead of individual variables.
Blank_Vec = zeros(6964,1);
Num_Cols = 60;
for ii = 1:Num_Cols
name = sprintf('lat_%i_days',ii);
ZeroColStruct.(name) = Blank_Vec;
end
if you absolutely MUST have individual variables, one method is this:
% Removed due to being a terrible way to do something
댓글 수: 3
Stephen23
2020년 9월 17일
Do NOT follow this advice. It teaches a complex and inefficient use of MATLAB.
"However, if you must..."
"if you absolutely MUST have individual variables..."
Most of the situations that I have read on this forum where someone explains why they "must" use dynamic variable names it turns out to be simpler and more efficient to solve using other approaches. A not-very-well-informed-user's idea of "must" is unlikely to be very correct, based on many years of threads on this forum.
For basic tasks like the one shown in this question, I have yet to see any situation that is not better solved using the recommended approach of basic MATLAB indexing.
Jonathan Demmer
2020년 9월 17일
Jonathan Demmer
2020년 9월 17일
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!