首页 > 其他分享 >从时序数据中提取特征分量

从时序数据中提取特征分量

时间:2024-07-04 18:31:33浏览次数:1  
标签:plt 提取 component yf 12 np import 时序 分量

 原始数据

import matplotlib.pyplot as plt
from matplotlib import font_manager
fname="/usr/local/python3.6/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/simhei.ttf"
zhfont = font_manager.FontProperties(fname=fname)


plt.figure(figsize=(14, 4))
plt.plot(dataset)
plt.title("原始数据", fontproperties=zhfont, fontsize=12)
plt.grid()
plt.show()

方法一:傅里叶变换

import datetime
import numpy as np
import pandas as pd
from scipy.fft import fft, ifft
import matplotlib.pyplot as plt
from matplotlib import font_manager
fname="/usr/local/python3.6/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/simhei.ttf"
zhfont = font_manager.FontProperties(fname=fname)


# 样本:288个5分钟点,即一天
N = len(dataset)

# 采样间隔(秒)
T = 300  # 每5分钟一个数据点

# 采样频率(Hz)
Fs = 1 / T  # 即每300秒一个样本

# 总观察时间(秒)
D = N * T  # 一整天的时间长度

# 生成时间向量
t = np.arange(0, D, T)

# 生成示例时序数据(两个正弦波的叠加)
# 假设每天有一个主要周期为24小时(低频)和一个次要周期为12小时(高频)
# y = 1.0 * np.sin(2.0 * np.pi * (1 / (24*3600)) * t) + 0.5 * np.sin(2.0 * np.pi * (1 / (12*3600)) * t)
y = dataset

# 计算傅里叶变换
yf = fft(y)
# 频率向量
xf = np.fft.fftfreq(N, T)

# 绘制频谱图
plt.figure(figsize=(14, 4))
plt.plot(xf, np.abs(yf))
plt.title("将原始数据从时域转成频域", fontproperties=zhfont, fontsize=12)
plt.xlabel("Frequency (Hz)", fontsize=12)
# plt.ylabel("Amplitude")
plt.grid()
plt.show()

# 提取各个正弦分量
def extract_sine_component(yf, freq_index):
    yf_component = np.zeros_like(yf)
    yf_component[freq_index] = yf[freq_index]
    if freq_index != 0:
        yf_component[-freq_index] = yf[-freq_index]  # 对称频谱
    y_component = ifft(yf_component)
    return np.real(y_component)

# 找出幅值最大的10个频率分量及其索引(只处理前N//2部分)
amplitudes = np.abs(yf[:N//2])
indices = np.argsort(amplitudes)[-10:]

plt.figure(figsize=(14, 4))
y_reconstructed = np.zeros_like(y)
for idx in indices:
    y_component = extract_sine_component(yf, idx)
    y_reconstructed += y_component
    plt.plot(t, y_component, label=f'Frequency: {xf[idx]:.5f} Hz')
plt.title("基于傅里叶变换将原始数据拆分成多个正弦波,取Top10", fontproperties=zhfont, fontsize=12)
plt.legend()
plt.grid()
plt.show()

# 绘制重建后的时序数据与原始数据的对比
plt.figure(figsize=(14, 4))
plt.plot(t, y, label='原始数据')
plt.plot(t, y_reconstructed, label='Top10正弦波叠加', linestyle='--')
plt.title("原始数据 vs Top10正弦波叠加", fontproperties=zhfont, fontsize=12)
plt.legend()
plt.grid()
plt.show()

 

标签:plt,提取,component,yf,12,np,import,时序,分量
From: https://www.cnblogs.com/standby/p/18284420

相关文章

  • 计算时序数据的周期性
    构造时序数据importnumpyasnpimportmatplotlib.pyplotasplt#设置参数period=128num_cycles=5total_length=period*num_cycles#生成周期性信号(正弦波形)np.random.seed(42)time=np.arange(0,total_length,1)signal=10*np.sin(2*np.pi*time......
  • 日志自动提取---七牛Logkit&观星应急工具
    目录七牛Logkit(Windows&Linux&Mac等)下载:文档:windows配置过程:1-下载2-修改logkit-community基本配置3-启动!4-浏览器访问5-添加配置吧观星应急工具 (Windows系统日志)七牛Logkit(Windows&Linux&Mac等)--简单直观,   专业版的功能更多...支持的数......
  • (2023.6更新)文献述评-数字经济与高质量发展(原始文本和提取信息)
    数字经济作为现代经济活动的重要组成部分,正日益成为推动经济社会高质量发展的关键因素。以下是对数字经济与高质量发展文献述评数据的介绍:数据简介定义:数字经济是基于数字技术的经济形态,侧重于数据资源的利用,优化资源配置,提升生产力。作用:数字经济对传统产业的升级转型和新兴......
  • 视频提取字幕的软件在哪?5个工具帮你把视频一键转成文字
    提取视频中的字幕如今已成为一项简单的任务,这大大提升了我们观看影视剧的便捷性,凸显了字幕的重要性。而最高效的方式无疑是利用视频或语音转文字工具来生成字幕。但市面上有众多的软件都提供了这项服务,而那些准确度较高的工具无疑能大大减轻我们后期编辑的负担。接下来就向大......
  • PointCloudLib alpha shapes算法提取平面点云边界 C++版本
    测试效果算法简介AlphaShapes算法是一种用于提取平面点云边界特征的方法,以下是对其原理和步骤的详细解释:1.AlphaShapes算法概述目标:从点云数据中提取曲面边界信息,通过计算点云中点的Alpha形状,获得边界特征。Alpha形状:一个可以描述几何体边界的参数。其计算基于一......
  • 边三联通分量
    感觉口胡了很多遍的模板算法,快NOI了才想起来写写代码。其实边三的代码很好写,网上许多资料都写麻烦了。边联通性其实是一个很能扩展的东西。两个点之间如果最少要割开\(k\)条边才能使它们之间不联通,称这两个点的边联通度为\(k\)。称两个点之间是\(k\)边联通的,当且仅当这两......
  • 视频转文字怎么提取?快速转换技巧全攻略
    经常有同学问俺,如何能够将视频在线转文字。无论是因为网课节奏过快难以跟上,还是出于为宣传视频添加字幕的需求......所以今天就向大家分享3个能够高效提取视频文字的工具,并提供详细的操作指南,确保每个人都能轻松掌握视频文字提取技巧。▎借助工具一:录音转文字工厂使用端口:......
  • 大模型技术方向:基于星火大模型的群聊对话分角色要素提取挑战赛笔记
    AI夏令营#Datawhale#夏令营基于星火大模型的群聊对话分角色要素提取挑战赛举办方:科大讯飞股份有限公司一、赛事背景在当今数字化时代,企业积累了丰富的对话数据,这些数据不仅是客户与企业之间交流的记录,更是隐藏着宝贵信息的宝库。在这个背景下,群聊对话分角色要素提取成为了企......
  • YOLOv5改进 | 主干网络 | ODConv + ConvNeXt 增强目标特征提取能力
    秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 ......
  • 【基于星火大模型的群聊对话分角色要素提取BaseLine学习笔记】
    @目录项目背景项目任务我的思路Baseline详解数据抽取完整代码星火认知大模型Spark3.5Max的URL值,其他版本大模型URL值请前往文档(https://www.xfyun.cn/doc/spark/Web.html)查看星火认知大模型调用秘钥信息,请前往讯飞开放平台控制台(https://console.xfyun.cn/services/bm35)查看星火......