how do I put arrays into a for loop

I have a .mat file. There are 24 array in this file. I want to calculate the mean of the first N elements of an array.
But what I want is for the 24 directories in the .mat file to automatically enter this into a for loop. I am waiting for your help in this matter.

2 Comments

"There are 24 array in this file. Array names like y1, y2 ... "
The most important thing is to load into an output variable:
S = load(...);
then you can trivially access the fieldnames of the structure S:
Loop over the fieldnames, allocate the data to an array, perform your calculation on the array. Done.
Backup of this question:
how do I put arrays into a for loop
I have a .mat file. There are 24 array in this file. I want to calculate the mean of the first N elements of an array.
But what I want is for the 24 directories in the .mat file to automatically enter this into a for loop. I am waiting for your help in this matter.

Sign in to comment.

 Accepted Answer

SungJun Cho
SungJun Cho on 15 Apr 2021
Edited: SungJun Cho on 15 Apr 2021
To calculate the mean of the first N elements of an array, you can use
mean_y1 = mean(y1(1:N));
However, you may import a .mat file which I suppose will give you a matrix in which each row or column is one array. In that case, just perform
mean_mat = mean(Y(:,1:N),2); % if each row is an array
mean_mat = mean(Y(1:N,:),1); % if each column is an array
and you will get a matrix containing the mean of first N elements of each array.
This should be a more efficient way to compute the mean than to use a for loop, but if using a for-loop is necessary, feel free to let me know.

9 Comments

Thank you for your answer. I think I can use the code you wrote first, but what I really want here is to automatically calculate the average of the first N elements of each array. If I use the first code, I have to write 24 lines of code for the 24 arrays I have. the arrays I have are not in a matrix.
Can you provide your .mat file so that I can take a look at it?
" the arrays I have are not in a matrix." - This is the main problem. If thevariables are store in a matrix, the processing is trivial. So this is the solution: Store the data in arrays.
I don't know how to store it in a matrix. how can I do it?
SungJun Cho ı can not share the .mat file from here.
You can try clicking "Insert" and attach your .mat file in the comment.
As Jan mentioned, it is best to store the variables in matrix for convenience. For now, you can do
data_path = '../Downloads/Data_x30_y30_28.mat'; % change this path to where your data is located
data = struct2cell(load(data_path));
data = data(30:53); % select y arrays
Y = cat(1,data{:}); % storing data into a matrix format
mean_mat = mean(Y(:,1:N),2); % given each row is an array
I believe this will solve your problem for now.
thank you very very much, but the only thing I don't understand is 30:53. Can you explain here?
No problem!
I imported your data as a structure type, then converted it into a cell type using "struct2cell". Once the data was converted, I noticed that the arrays named "y" (e.g., y1, y10, etc.) were located from 30th to 53rd rows of the data, so I extracted only those arrays so that the variable "Y" contains only the y arrays.
thank you so much. have a nice day.

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 15 Apr 2021

Commented:

Rik
on 23 Apr 2021

Community Treasure Hunt

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

Start Hunting!