필터 지우기
필터 지우기

concatenation of few matrix with a loop

조회 수: 2 (최근 30일)
Joydeb Saha
Joydeb Saha 2020년 10월 7일
댓글: Joydeb Saha 2020년 10월 7일
C{1} = [total1979_125_30];
C{2} = [total1980_125_30];
C{3} = [total1981_125_30];
C{4} = [total1982_125_30];
C{5} = [total1983_125_30];
...upto C{40} = [total2019_125_30];
just help me making the loop
So that I can use
A = cat(3,C{:});
M = mean(A,3);
  댓글 수: 2
Stephen23
Stephen23 2020년 10월 7일
The cause of your problem is that you put meta-data (e.g. dates) into variables names. Meta-data is data and belongs in variables, not in variable names. Once you have made that bad design decision, you force yourself into writing slow, complex, inefficient, obfuscated, buggy code to try and access those multiple data arrays:
So far you have not told us the most important information: how did you get those arrays into the workspace? Did you write them all out by hand? My guess is that you used load in a loop, in which case you can fix the problem at its cause by loading into an output variable, e.g.:
N = the number of files
C = cell(1,N);
for k = 1:N
F = the k-th filename
S = load(F);
C(k) = struct2cell(S);
end
Note how this does not require evil eval anywhere. Once you tell us how you actually get those multiple variables into the workspace, someone can help you to import/create the data in a better way.

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

채택된 답변

Ameer Hamza
Ameer Hamza 2020년 10월 7일
편집: Ameer Hamza 2020년 10월 7일
It was not a good idea to create a variable name like this: https://www.mathworks.com/matlabcentral/answers/304528-tutorial-why-variables-should-not-be-named-dynamically-eval. Always use a cell array. Since you already created these, you can use the following loop to create the cell array now.
C = {};
vals = 1979:2019;
for i = 1:numel(vals)
[~, C{i}] = evalc(sprintf('total%d_125_30', vals(i)));
end
  댓글 수: 12
Ameer Hamza
Ameer Hamza 2020년 10월 7일
Or the alternate solution suggested by Stephen to use a 3D array
C = cat(3, C{:});
M_new = C - M;
M_new will also be a 3D array.
Joydeb Saha
Joydeb Saha 2020년 10월 7일
Yes, its working. Thank you very much for both your support.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by