Andy
Andy

Reputation: 5

analyse time series at a specific frequency

I have a long data set of water temperature:

t = 1/24:1/24:365;
y = 1 + (30-1).*rand(1,length(t));
plot(t,y)

The series extends for one year and the number of measurements per day is 24 (i.e. hourly). I expect the water temperature to follow a diurnal pattern (i.e. have a period of 24 hours), therefore I would like to evaluate how the 24 hour cycle varies throughout the year. Is there a method for only looking at specific frequencies when analyzing a signal? If so, I would like to draw a plot showing how the 24 hour periodicity in the data varies through the year (showing for example if it is greater in the summer and less in the winter). How could I do this?

Upvotes: 0

Views: 222

Answers (2)

bdecaf
bdecaf

Reputation: 4732

  • My first thought would be fourier transformation. This will give you a frequency spectrum. At high frequencies (> 1/d) you would have the pattern for a day, at low frequencies the patter over longer times. (see lowpass and highpass filter)

  • Also you could go for a frequency/time visualization that will show how the frequencies change over a year.

  • A bit more work - but you could write a simple model and create a Kalman filter for it.

Upvotes: 0

denahiro
denahiro

Reputation: 1199

You could use reshape to transform your data to a 24x365 matrix. In the new matrix every column is a day and every row a time of day.

temperature=reshape(y,24,365);
time=(1:size(temperature,1))-1;
day=(1:size(temperature,2))-1;
[day,time]=meshgrid(day,time);

surf(time,day,temperature)

Upvotes: 2

Related Questions