使用pytorch进行FFT和STFT

这篇具有很好参考价值的文章主要介绍了使用pytorch进行FFT和STFT。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先,我们定义一个波形,幅值分别为20和38,频率为2和13:
y = 20 sin ⁡ ( 2 π × 2 x ) + 38 sin ⁡ ( 2 π × 13 x ) y=20 \sin (2\pi \times 2x)+38\sin (2\pi \times 13x) y=20sin(2π×2x)+38sin(2π×13x)
采样频率为200Hz,采样时间为1s。由于Pytorch中没有类似于Numpy中numpy.pi的用法,所以我们先用Numpy计算函数,然后再存入Tensor。

import torch
import numpy as np
import matplotlib.pyplot as plt

Fs = 200 # Sampling frequency
T = 1 / Fs # period
t = 1 # time
L = Fs * t # signle length

x = np.arange(L)*T
y = 20*np.sin(2*np.pi*2*x) + 38*np.sin(2*np.pi*13*x)

plt.plot(x,y)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.show()

波形图如下:
使用pytorch进行FFT和STFT
傅里叶变换是一种将信号从时域转换到频域的数学工具。它将一个连续或离散的信号分解成一系列不同频率的正弦和余弦波的叠加。使用pytorch对该函数进行快速傅里叶变换:

p = torch.fft.fft(torch.from_numpy(y))
p = 2 * torch.abs(p) / len(p)
p = p[:int(len(p) / 2)]
p[0] = 0.
freq_bin = np.arange(int(L/2))*Fs/L

plt.plot(freq_bin,p)
plt.xlabel('Frequency (Hz)')
plt.ylabel('|P1|')
plt.show()

频谱图如下,可以看到幅值和频率与函数y相同:
使用pytorch进行FFT和STFT
下面,我们再对函数进行短时傅里叶变换。短时傅里叶变换(Short-Time Fourier Transform,STFT)是一种信号处理技术,用于将非平稳信号分解成时间和频率的分量。它是傅里叶变换(Fourier Transform)的一种变体,在时间上加一定的窗函数,然后对每个窗函数内的信号进行傅里叶变换,从而得到时频域上的信号特征。STFT常用于音频、图像等信号处理领域,以提取时域和频域上的信息,以及信号的时频分布特性:

spectrum = torch.stft(input=torch.from_numpy(y), n_fft=200, return_complex=True)

此外,还可以用torchaudio.functional.spectrogram,也是返回STFT之后的频谱。

如果想直接画出频谱图可以使用matplotlib的plt.specgram方法:

plt.specgram(y, Fs=Fs)
plt.xlabel('Time (s)')
plt.ylabel('Frequency (Hz)')
plt.show()

效果如下:
使用pytorch进行FFT和STFT文章来源地址https://www.toymoban.com/news/detail-478806.html

到了这里,关于使用pytorch进行FFT和STFT的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PaddleX入门教程3:开始使用我们自己的模型进行推理

    首先我们要从网上下载几张图片,一张菠菜的、一张胡萝卜的、一张茄子的、一张西红柿的,建议找一些相对辨识度比较高的。因为我们现在的模型,可能没有那么强大。 如下:保存为jpg格式, 注意文件名的命名 。 然后,将 这些图片放置到前面我们的模型目录下。  此时

    2024年02月07日
    浏览(59)
  • windows下配置pytorch + yolov8+vscode,并自定义数据进行训练、摄像头实时预测

    最近由于工程需要,研究学习了一下windows下如何配置pytorch和yolov8,并自己搜集数据进行训练和预测,预测使用usb摄像头进行实时预测。在此记录一下全过程 1. vscode安装 windows平台开发python,我采用vscode作为基础开发平台,点击 https://code.visualstudio.com/进入vscode官网,下载对应

    2024年02月16日
    浏览(66)
  • MATLAB利用FFT对信号进行频谱分析

    1.实验目的 (1)进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)。 (2)熟悉FFT算法原理和FFT程序的应用。 (3)学习利用FFT对离散时间信号进行频谱分析的方法,了解可能出现的误差及其原因,以便在实际中正确应用

    2024年02月09日
    浏览(44)
  • 在STM32中对信号进行FFT运算

    首先需要在程序文件中添加DSP库并将其文件夹加入程序中 其中包括头文件与arm_cortexM4lf_math.lib 在keil中需要进行如下操作 1、魔术棒C/C++Define ,ARM_MATH_CM4,__CC_ARM,ARM_MATH_MATRIX_CHECK,ARM_MATH_ROUNDING 2、在程序中添加arm_cortexM4lf_math.lib文件 3、添加头文件路径 …DSP_LIBInclude 4、打开Use M

    2024年02月16日
    浏览(38)
  • Matlab如何导入Excel数据并进行FFT变换

    如果你发现某段信号里面有干扰,想要分析这段信号里面的频率成分,就可以使用matlab导入Excel数据后进行快速傅里叶变换(fft)。 先直接上使用方法,后面再补充理论知识。 可以通过串口将需要分析的数据发送到串口助手,注意,串口助手复制数据,是你接收了多少,就能

    2024年02月09日
    浏览(41)
  • 基于Xilinx vivado FFT ip进行信号频谱测量

    本文章使用Xilinx的fft ip完成了经过参数化的任意个信号的基频测量,完整代码以及代码解释在文章中给出。如有错误,希望指出。 ps:只使用了fft ip进行频率测量未测量幅度,为防止错误不对幅度测量进行讲解,且幅度测量因为未使用其中获得的幅度是未经处理的原始数据,

    2024年01月20日
    浏览(33)
  • 利用STM32ZET6 进行FFT采集频率

      准备电赛的中,尝试了几种测量频率的方法,也参考了一些博主,没有一种可以测量范围很广的方法,而且大多数都要豆豆下载,本人属于看见要给钱就会直接撤退的,当然也不是批判官方,毕竟还是有许多好东西的。下面的代码都是我在准备比赛时写的,可以测量。如果

    2024年04月24日
    浏览(30)
  • 使用径向基函数(RBF)神经网络对我们自己的excel数据进行分类---包括详细的python代码,RBFRegressor

    径向基神经网络(Radial Basis Function Neural Network)是一种人工神经网络,它由三层组成:输入层、隐藏层和输出层。与传统的神经网络不同,径向基神经网络并不使用传统的激活函数,而是使用径向基函数作为激活函数,即: y = f ( z ) y = f(z) y = f ( z ) ,其中 f f f 是径向基函数

    2024年02月10日
    浏览(45)
  • 使用逻辑回归LogisticRegression来对我们自己的数据excel或者csv数据进行分类--------python程序代码,可直接运行

    逻辑回归是一种用于二分类问题的机器学习算法。它基于对输入特征进行加权求和,然后将这个求和结果传入一个sigmoid函数中来预测输出标签的概率。在训练过程中,我们需要使用极大似然估计来更新模型参数,以便使模型的预测结果最符合实际情况。 逻辑回归是一种分类

    2024年02月10日
    浏览(42)
  • 使用Ananconda进行Pytorch配置

    为什么选择pytorch: 活跃度:逐渐形成了完整的开发生态,资源多。 动态图:动态图架构,且运行速度较快。 代码简洁:易于理解,设计优雅,易于调试。 可能有的疑惑: 深度学习框架太多不知道如何选择。 开源源代码很多,但阅读和修改起来很吃力。 解决实际工程任务时

    2024年02月08日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包