Python 傅里叶分析

0. 一维序列卷积

  • np.convolve,注意 same/valid参数下(默认为 full),序列卷积出的结果的长度:

    >> np.convolve([1, 2, 3], [0, 1, 0.5])
    array([ 0. ,  1. ,  2.5,  4. ,  1.5])
    >> np.convolve([1, 2, 3],[0, 1, 0.5], 'same')
    array([ 1. ,  2.5,  4. ])
    >> np.convolve([1, 2, 3],[0, 1, 0.5], 'valid')
    array([2.5])

1. numpy 傅里叶变换

  • np.fft.fft:Y = np.fft.fft(y, 512)
  • 能量谱(表明各个频率分量的能量大小):Pyy = Y * np.conj(Y) / 512

2. 傅里叶频谱分析

从MATLAB帮助文档里扒下来的例子之——傅里叶变换用于频谱分析

傅里叶变换的一大用途是从混杂的时域信号中找出其中各频率成分的分布。
以一个由 50Hz、120Hz 两个频率正弦信号和随机噪声叠加得到的信号为例(采样频率 1000Hz):

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0, .6, .001)
    # 0.001 => 采样频率
x = np.sin(2*np.pi*50*t) + np.sin(2*np.pi*120*t)
y = x + 2*np.random.randn(t.size)

# plt.plot(t[:50], y[:50])
# plt.show()

Y = np.fft.fft(y, 512)
Pyy = Y * np.conj(Y) / 512
plt.plot(np.round(1000*np.arange(256)/512), Pyy[:256])
plt.show()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值