0

我有一个很长的水温数据集:

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

该系列延续一年,每天的测量次数为 24 次(即每小时一次)。我希望水温遵循昼夜模式(即有 24 小时的周期),因此我想评估 24 小时循环在一年中的变化情况。有没有一种方法可以在分析信号时只查看特定频率?如果是这样,我想绘制一个图表,显示数据中的 24 小时周期性如何在一年中变化(例如,显示它是否在夏天更大而在冬天更少)。我怎么能这样做?

4

2 回答 2

2

您可以使用reshape将数据转换为24x365矩阵。在新矩阵中,每一列是一天,每一行是一天中的某个时间。

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)
于 2012-08-09T09:37:58.830 回答
0
  • 我的第一个想法是傅立叶变换。这会给你一个频谱。在高频(> 1 / d)下,您将拥有一天的模式,在低频下,模式会持续更长的时间。(见低通和高通滤波器)

  • 您还可以进行频率/时间可视化,以显示频率在一年内的变化。

  • 更多的工作 - 但您可以编写一个简单的模型并为其创建一个卡尔曼滤波器。

于 2012-08-09T10:05:56.980 回答