# How to convert a time serie with daily data to a time serie with weekly data by taking the average of every 7 values of the daily vector?

6 views (last 30 days)
I have a vector with daily data. I need to average every 7 values of it to obtain a new vector with weekly data.
##### 2 CommentsShowHide 1 older comment
Fernanda Suarez Jaimes on 10 Mar 2020
Sure!
%Time Vector
xtime1= [1:1:6000]'; %daily
xtime2= [1:1:42000]'; %weekly
%Time Series 1- daily entries
%comand randn generats 42000 random numbers that are normaly distributed.
rng('default')
time_series1=randn(42000,1);
%generating time series with 6000 entries log-normal distributed
%the code for this distribution is based on the code available at
%mathworks.com
rng('default'); % So that numbers can be repeated
time_series2 = lognrnd(0,0.25, [6000 1]); %generating time series with mu set to zero and sigma 0.25

Ameer Hamza on 11 Mar 2020
As you mentioned in your comment, you have a vector of type double. In that case, you can average 7 elements as follow:
x = rand(1000,1); % random data
x = padarray(x, [ceil(numel(x)/7)*7 - numel(x) 0], 0, 'post'); % make sure that number of elements are multiple of 7
mean_x = mean(reshape(x, 7, []), 1)';
Fernanda Suarez Jaimes on 12 Mar 2020
Thank you Ameer!
Now I have a vector of 1 row and 6,000 columns.

Stephan on 10 Mar 2020
Edited: Stephan on 10 Mar 2020
The usual way to do this is by using the retime function.
##### 2 CommentsShowHide 1 older comment
Stephan on 11 Mar 2020
There are examples given under the link i gave you.