MATLAB: Create array with average values

averagefor loopindexMATLAB

I have a device that measures 12 different temperatures at different places and stores it in a 1D array.
The 1D array consits of 480 elemts, so every sensor measured 480/12 = 40 times.
To get the average value of the first 5 measurements per sensor I have to calculate the average of element 1,13,25,37,49 and 2,14,26,38,50 and 3,15,27,39,51 and 4,16,28,40,52 ……12,24,36,48,60. This was succesfully done in Matlab.
Now i have to calculate the average of the next 5 measurements of the device. The average of sensor 1 should be calculated with elelemts 61,73,85,97,109 and sensor 2 needs elements 62,74,86,98,110 etc….
when these average values are calculated i want to get 40/8 = 5 average values per sensor so 12*5 = 60 elements in total.
The resulting array should look like (av=average, number is sensor) :
av1,av2,av3,av4,av5,av6,av7,av8,av9,av10,av11,av12,av1,av2,av3,av4,av5,av6…….. (array length =60)

Best Answer

Use reshape. Say data is a 480 element vector
X = reshape(data,12,40)
Then if you want the average over all the data you can just average across rows
Xmean = mean(X,2)
If you want the average of the first 5 samples then the next 5 etc, you can just average over the selected columns,
Something like this
data = randn(480,1)
X = reshape(data,12,40)
avgResults = zeros(12,8); % preallocate array to hold 5 sample averages
for k = 1:8
col = (k-1)*5+1; % column number
avgResults(:,k) = mean(X(:,col:col+4),2) % average over kth group of 5
end
Related Question