Allocating 500 matrices into one 3D array with a loop

Hello guys, I have about 500 matrices naming after "yfit" + yr/month/date (such as yfit20000115). I want to save all of them into one 3d array, here is my code:
x = zeros(1455,1464,500);
x(:,:,1) = yfit20000115;
x(:,:,2) = yfit20000131;
x(:,:,3) = yfit20000216;
x(:,:,4) = yfit20000303;
x(:,:,5) = yfit20000319;
x(:,:,6) = yfit20000404;
........................ until x(:,:,500)
Can anybody please tell me how to loop through this? Especially, I do not know how to put the names into the loop. I thought about using EVAL, but eval's instruction on matlab seems very short and simple. Please help, thank you!

4 Commenti

How do you currently have the 500 matrices stored? Are they all stored as variables in one .mat file? Are they stored in individual .mat files that you are loading in a loop? Are they stored in individual text files that you are using load() with no output?
They are all stored as variables in one .mat file. Thank you.
Stephen23
Stephen23 il 20 Nov 2017
Modificato: Stephen23 il 20 Nov 2017
@Zoe: simply load the .mat file into one output variable (which is a structure), then loop over the fields of that structure. See Nicolas Schmit's answer to know how to do this.
Do NOT load 500 individual arrays into your workspace and then try to use eval to access them, unless you want to write slow, buggy, complex, inefficient, hard-to-debug code. Read this to why doing that is a very inefficient way to write code:
@Stephen Cobeldick: Thank you so much for telling me this! I read through the link and also sent the link to my professor!

Accedi per commentare.

 Risposta accettata

Use
S = load('your_mat_file');
To load your data into a structure S, Then loop over the fields of S.
fields = fieldnames(S);
x = zeros(1455,1464,500);
for k=1:500
x(:, :, k) = S.(f{k});
end

2 Commenti

Or:
S = load('your_mat_file');
fields = fieldnames(S);
[fields, index] = sort(fields);
match = strncmp(fields, 'yfit', 4);
dataCell = struct2cell(S);
x = cat(3, dataCell{index});
I want to say thank you to both of you for being so helpful!!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange

Richiesto:

Zoe
il 19 Nov 2017

Commentato:

Zoe
il 20 Nov 2017

Community Treasure Hunt

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

Start Hunting!

Translated by