0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Python的numpy进行的数字信号的频谱分析详解

dKBf_eetop_1 2017-12-12 14:16 次阅读

Python 是目前的热门语言,一直觉得掌握一门编程语言对作为搞技术的来说还是很有必要的,结合工作中能用到的一些数据处理和分析的内容,觉得从数据分析入手,争取能够掌握Python在数据处理领域的一些应用。下面是基于Python的numpy进行的数字信号的频谱分析介绍

一、傅里叶变换

傅里叶变换是信号领域沟通时域和频域的桥梁,在频域里可以更方便的进行一些分析。傅里叶主要针对的是平稳信号的频率特性分析,简单说就是具有一定周期性的信号,因为傅里叶变换采取的是有限取样的方式,所以对于取样长度和取样对象有着一定的要求。

二、基于Python的频谱分析

# _*_ coding:utf-8 _*_

import numpy as np #导入一个数据处理的模块

import pylab as pl #导入一个绘图模块,matplotlib下的模块

sampling_rate = 8000 ##取样频率

fft_size =512 #FFT处理的取样长度

t = np.arange(0,1.1,1.0/sampling_rate)

#np.arange(起点,终点,间隔)产生1s长的取样时间

x = np.sin(2*np.pi*156.25*t)+2*np.sin(2*np.pi*234.375*t)

#两个正弦波叠加,156.25HZ和234.375HZ,因此如上面简单

#的介绍FFT对于取样时间有要求,

#N点FFT进行精确频谱分析的要求是N个取样点包含整数个

#取样对象的波形。

#因此N点FFT能够完美计算频谱对取样对象的要求

#是n*Fs/N(n*采样频率/FFT长度),

#因此对8KHZ和512点而言,

#完美采样对象的周期最小要求是8000/512=15.625HZ,

#所以156.25的n为10,234.375的n为15。

xs = x[:fft_size]# 从波形数据中取样fft_size个点进行运算

xf = np.fft.rfft(xs)/fft_size # 利用np.fft.rfft()进行FFT计算,rfft()是为了更方便

#对实数信号进行变换,由公式可知/fft_size为了正确显示波形能量

# rfft函数的返回值是N/2+1个复数,分别表示从0(Hz)

#到sampling_rate/2(Hz)的分。

#于是可以通过下面的np.linspace计算出返回值中每个下标对应的真正的频率:

freqs = np.linspace(0,sampling_rate/2,fft_size/2+1)

# np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

#在指定的间隔内返回均匀间隔的数字

xfp = 20*np.log10(np.clip(np.abs(xf),1e-20,1e1000))

#最后我们计算每个频率分量的幅值,并通过 20*np.log10()

#将其转换为以db单位的值。为了防止0幅值的成分造成log10无法计算,

#我们调用np.clip对xf的幅值进行上下限处理

pl.figure(figsize=(8,4))

pl.subplot(211)

pl.plot(t[:fft_size], xs)

pl.xlabel(u"时间(秒)")

pl.title(u"The Wave and Spectrum 156.25Hz234.375Hz")

pl.subplot(212)

pl.plot(freqs, xfp)

pl.xlabel(u"Hz")

pl.subplots_adjust(hspace=0.4)

pl.show()

#绘图显示结果

现在来看看频谱泄露,将采样对象的频率改变

x = np.sin(2*np.pi*100*t)+2*np.sin(2*np.pi*234.375*t)

我们明显看出,第一个对象的频谱分析出现“泄露”,能量分散到其他频率上,

没法准确计算到计算对象的频谱特性。

窗函数

上面我们可以看出可以通过加“窗”函数的方法来处理,尽量保证FFT长度内

的取样对象是对称的。

import pylab as pl

import scipy.signal as signal

pl.figure(figsize=(8,3))

pl.plot(signal.hann(512))#汉明窗函数

pl.show()

对上述出现频谱泄露的函数进行加窗处理,后面会介绍一下各种加窗函数的原理和效果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    55

    文章

    4764

    浏览量

    84353
  • 傅里叶变换
    +关注

    关注

    6

    文章

    429

    浏览量

    42533

原文标题:基于Python的数字信号处理初步

文章出处:【微信号:eetop-1,微信公众号:EETOP】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    怎么用频谱分析法测量数字信号电平?

    数字电视、数字传输、数据通信中,其信号是采用多种调制方式的数字信号,这时的数字信号电平已不能用一般传统的方法来定度和测量,用
    发表于 08-08 07:44

    应用FFT对信号进行频谱分析

    实验 应用FFT对信号进行频谱分析一、 实验目的1、在理论学习的基础上,通过本次实验,加深对快速傅里叶变换的理解,熟悉FFT算法及其程序的编写。2、熟悉
    发表于 05-10 10:00 64次下载

    信号频谱分析和测试

    信号频谱分析和测试 1.了解周期函数的傅立叶变换理论及虚拟频谱分析仪的工作原理;2.熟悉典型信号的波形和频谱特征,并能够从
    发表于 06-22 09:16 6017次阅读
    <b class='flag-5'>信号</b><b class='flag-5'>频谱分析</b>和测试

    虚拟信号频谱分析仪的设计

    虚拟信号频谱分析仪的设计 随着计算机技术的迅速发展,利用软件进行信号处理技术的应用日益广泛,已开发的用于虚拟仪器的数字信号处理和图
    发表于 01-21 17:12 1582次阅读
    虚拟<b class='flag-5'>信号</b><b class='flag-5'>频谱分析</b>仪的设计

    复平面内信号频谱分析

    给出了一种在复平面内,用图形分析进行信号频谱分析的方法,详细地分析数字频率与模拟频率之间的关系
    发表于 02-07 11:58 29次下载
    复平面内<b class='flag-5'>信号</b><b class='flag-5'>频谱分析</b>

    数字信号处理教程之数字信号频谱的详细资料说明

    数字信号处理教程之数字信号频谱的详细资料说明包括了:1 频谱的意义,2 非周期数字信号频谱,3
    发表于 11-13 17:08 24次下载

    数字信号全相位谱分析与滤波技术的PDF电子书免费下载

    数字信号全相位谱分析与滤波技术》是2009年02月电子工业出版社出版的图书,作者是王兆华。该书系统地介绍了一种新的信号处理方法——全相位数字信号处理方法,并且利用这种新方法对
    发表于 08-06 08:00 96次下载
    <b class='flag-5'>数字信号</b>全相位<b class='flag-5'>谱分析</b>与滤波技术的PDF电子书免费下载

    详解频谱分析仪的基本原理

    本文的目的是为您提供关于频谱仪或信号分析仪的基本概述。您或许想要进一步了解与频谱分析相关的更多其他话题,您可访问频谱分析仪网页。这里将重点介
    的头像 发表于 04-28 10:18 5102次阅读

    频谱分析仪对信号进行频谱分析误差有哪几方面?

    示波器、跟踪示波器、分析示波器、谐波分析器、频率特性分析仪或傅里叶分析仪等。现代频谱分析仪能以模拟方式或
    的头像 发表于 12-27 10:47 2669次阅读
    <b class='flag-5'>频谱分析</b>仪对<b class='flag-5'>信号</b><b class='flag-5'>进行频谱分析</b>误差有哪几方面?

    应用MATLAB(或Python)对数据进行数字特征估计与频谱分析

    实验目的:应用MATLAB MATLAB(或Python)对数据进行数字特征估计与频谱分析 实验内容:实验数据一为某气象站若干年每日气象数据,实验数据二为某气象站每小时气象数据。试
    发表于 08-02 16:19 16次下载

    频谱分析仪的功能和特点

    频谱分析仪最核心的功能是对信号进行频谱分析,即将信号从时域转换到频域,以显示信号的频率组成。通过频谱分析
    的头像 发表于 05-08 16:18 1238次阅读

    频谱分析仪的用途与应用详解

    频谱分析仪,作为电子测量领域的重要工具,其应用广泛且功能强大。它主要用于分析信号频谱特性,即信号在频域上的分布和变化。在现代通信、雷达、电
    的头像 发表于 05-14 15:52 1365次阅读

    频谱分析仪怎么测量数字信号

    在现代通信、数据传输和信号处理等领域,数字信号的应用日益广泛。数字信号以其高可靠性、抗干扰能力强和易于处理等优点,成为现代通信系统的核心。然而,对于数字信号的测量和
    的头像 发表于 05-17 18:10 920次阅读

    频谱分析仪是否有磁性原理

    仪的工作原理主要包括以下几个步骤: 输入信号频谱分析仪接收待测信号,这些信号可以是模拟信号数字信号
    的头像 发表于 06-03 09:23 389次阅读

    Keysight 频谱分析仪(信号分析仪)

    Keysight频谱分析仪(信号分析仪)足够的性能和卓越的可靠性,帮助您更轻松、更快速地应对常见的射频-微波测试测量挑战。可靠的频谱分析仪和信号
    的头像 发表于 09-12 08:10 345次阅读
    Keysight <b class='flag-5'>频谱分析</b>仪(<b class='flag-5'>信号</b><b class='flag-5'>分析</b>仪)