【问题标题】:analyse time series at a specific frequency以特定频率分析时间序列
【发布时间】:2012-08-09 09:04:02
【问题描述】:

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

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

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

【问题讨论】:

  • 您不应该查看给定时期内的平均值,而不是查看单个时间点吗?平均可减少噪音量,因此您将获得更平滑的整体情节 imo...

标签: matlab signal-processing


【解决方案1】:

您可以使用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)

【讨论】:

  • 这是一个很好的答案。我也建议这样做。
【解决方案2】:
  • 我首先想到的是傅立叶变换。这会给你一个频谱。 在高频(> 1/d)下,你会得到一天的模式,在低频下,模式会持续更长的时间。 (见低通和高通滤波器)

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

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

【讨论】:

  • 我已经在时频域(小波)中绘制了数据,但我不需要数据中的所有 a 周期性,我只需要一个周期为 1/24 的小波显示构成数据的所有期间。
  • 我认为小波对你没有好处,因为它们的频率总是 2 的幂。但是您可以通过对 24 小时部分进行傅立叶变换来手动执行相同的操作。
  • 傅里叶变换过度了——一个简单的带通滤波器就足够了。一般来说,小波不仅仅是二的幂,而是二元网格上的离散小波变换。对于这种任务,卡尔曼滤波是完全错误的,因为它不是分析工具!卡尔曼滤波器用于预测。
  • 哦 - 不知道小波。但我不同意卡尔曼滤波器。我几乎只用它们来估计状态空间参数。
猜你喜欢
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
相关资源
最近更新 更多