# I have 366 matrices of size 72x144. How can I create a 367th matrix, also size 72x144, which represents the average by element of the original?

1 view (last 30 days)
Patrick on 3 Oct 2013
Answered: Kelly Kearney on 3 Oct 2013
I asked a similar question last night, but didn't get an answer I understood. To be more specific, I have 366 matrices, each size 72x144, and each representing a day's worth of data, for a total of one year worth of daily data. The file names for the individual matrices are in the format "20040101.txt", "20040102.txt", ... "20040131.txt", "20040201.txt", etc. I would like to create a new 72x144 matrix which represents the average by element of the original 366 matrices. What is the easiest way for me to do that, keeping in mind I know very little about MATLAB.
Last night, I successfully made an average matrix for two separate months, but it took me nearly an hour to do so, because I did it the only way I understood: add all matrices manually and divide by 31, such that:
newMatrix=('20040101.txt'+'20040102.txt'...'20040131.txt')./31
How can I make this simpler? I know there is a better way, but can someone please also explain in detail what the simpler function does (how it operates) rather than just giving me the code?
Thanks,
Patrick

Walter Roberson on 3 Oct 2013
As you create read the K'th file, store the data into DailyData(:,:,K) . Then to calculate the average of each element over the 366 matrices, use mean(DailyData,3)

Kelly Kearney on 3 Oct 2013
To add to Walter's answer, here's a quick way to generate your list of file names, since they're labeled by date rather than a simple sequence of 1-366:
days = datenum(2004,1,1):datenum(2004,12,31);
files = cellstr(datestr(days, 'yyyymmdd.txt'));

### Categories

Find more on Calendar in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!