小编Eni*_*mAI的帖子

如何在不指定周期的情况下分解数据中存在的多个周期性?

我试图将信号中存在的周期性分解为其各个组成部分,以计算它们的时间周期。

假设以下是我的示例信号:

在此输入图像描述

您可以使用以下代码重现信号:

t_week = np.linspace(1,480, 480)
t_weekend=np.linspace(1,192,192)
T=96 #Time Period
x_weekday = 10*np.sin(2*np.pi*t_week/T)+10
x_weekend = 2*np.sin(2*np.pi*t_weekend/T)+10
x_daily_weekly_sinu = np.concatenate((x_weekday, x_weekend)) 

#Creating the Signal
x_daily_weekly_long_sinu = np.concatenate((x_daily_weekly_sinu,x_daily_weekly_sinu,x_daily_weekly_sinu,x_daily_weekly_sinu,x_daily_weekly_sinu,x_daily_weekly_sinu,x_daily_weekly_sinu,x_daily_weekly_sinu,x_daily_weekly_sinu,x_daily_weekly_sinu))

#Visualization
plt.plot(x_daily_weekly_long_sinu)
plt.show()
Run Code Online (Sandbox Code Playgroud)

我的目标是将这个信号分成 3 个独立的隔离分量信号,其中包括:

  1. 天数作为期间
  2. 工作日作为期间
  3. 周末作为期间

期间如下图:

在此输入图像描述

我尝试使用statsmodel中的STL分解方法:

sm.tsa.seasonal_decompose()
Run Code Online (Sandbox Code Playgroud)

但这仅适用于您事先知道周期的情况。并且仅适用于一次分解一个周期。同时,我需要分解任何具有多个周期性且其周期事先未知的信号。

谁能帮助如何实现这一目标?

python signal-processing numpy fft autocorrelation

7
推荐指数
1
解决办法
574
查看次数

标签 统计

autocorrelation ×1

fft ×1

numpy ×1

python ×1

signal-processing ×1