【scipy 基础】--信号处理

这篇具有很好参考价值的文章主要介绍了【scipy 基础】--信号处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

scipy.signal模块主要用于处理和分析信号。
它提供了大量的函数和方法,用于滤波、卷积、傅里叶变换、噪声生成、周期检测、谱分析等信号处理任务。

此模块的主要作用是提供一套完整的信号处理工具,从而帮助用户对各种连续或者离散的时间序列数据、音频信号、电信号或其他物理信号进行操作和分析。
它支持许多标准的和常用的信号处理技术,例如傅立叶变换(用于频谱分析和频域滤波)、IIR和FIR滤波器设计、卷积、及相关性计算等。

1. 主要功能

信号处理模块包含的函数非常丰富。

类别 说明
卷积相关函数 各类一维,二维数组的卷积计算,包含约9个函数
B-样条相关函数 n阶B-样条基函数的高斯*似,*滑样条(立方体)滤波等等,包含约10多个函数
滤波函数相关 对 N 维数组执行中值滤波器,维纳滤波器等等,包含约20个函数
过滤器设计相关 使用双线性变换从模拟滤波器返回数字IIR滤波器,使用最小二乘误差最小化的FIR滤波器设计,使用窗口法进行FIR滤波器设计,包含约30个函数
连续时间线性系统 连续时间的,状态空间形式的等各类线性时不变系统,计算其阶跃响应,频率响应等,包含约10个函数
离散时间线性系统 离散时间的,状态空间形式的等各类线性时不变系统,计算其阶跃响应,频率响应等,包含约10个函数
LTI(线性非时变)表示 用于求解LTI系统的函数和方法,包括从输入到输出的传递函数的计算、系统稳定性的分析、系统响应的求解等,包含约10个函数
窗函数相关 用于滤波和谱估计的一套窗函数,包含约30个函数
小波相关函数 处理小波变换,滤波等,包含约7个函数
信号峰值计算函数 计算信号的极大,极小值,峰值的突出程度等,包含约7个函数
光谱分析相关函数 用于分析连续和离散的时间信号、实数和复数的信号等。分析信号的频谱分布、频率响应、谱密度等属性等,包含约11个函数
线性调频 Z 变换和变焦 FFT 是两种特殊的信号处理方法,用于在频域对信号进行变换和缩放,包含约5个函数

与其他子模块相比,明显可以看出scipy.signal子模块的函数数量非常多。

这是因为信号处理涉及的领域和应用场景非常广,
包括通信、计算机应用、物理、化学、生物学、军事、经济等领域;
以及声音处理、图像处理、信号分析、信号检测、频谱分析、雷达、无线通信、音频处理、视频处理、遥感、生物医学信号处理、控制系统、信号压缩、模式识别等各种场景。

2. 功能示例

scipy.signal子模块的功能太多,下面演示其中几个函数抛砖引玉。

2.1. 滤波器示例

既然是信号处理模块,肯定离不开对波的处理。

我们首先构造两个正弦波,一个10HZ,一个30HZ

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

sig1 = np.sin(2 * np.pi * 10 * t)
sig2 = np.sin(2 * np.pi * 30 * t)
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True, figsize=[6, 4])
ax1.plot(t, sig1)
ax1.set_title("10 Hz 正弦波")
ax1.axis([0, 1, -2, 2])

ax2.plot(t, sig2)
ax2.set_title("30 Hz 正弦波")
ax2.axis([0, 1, -2, 2])

plt.show()

【scipy 基础】--信号处理

然后将2个正弦波混合起来,同一个20HZ的滤波器进行高通低通滤波。

t = np.linspace(0, 1, 1000, False)  # 1 second
sig = np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 30 * t)
fig, (ax1, ax2, ax3) = plt.subplots(3, 1, sharex=True, figsize=[6,6])
ax1.plot(t, sig)
ax1.set_title("10 Hz 和 30 Hz 混合")
ax1.axis([0, 1, -2, 2])

# 用20HZ的频率 高通滤波
sos_high = signal.butter(10, 20, 'hp', fs=1000, output='sos')
# 用20HZ的频率 低通滤波
sos_low = signal.butter(10, 20, 'lp', fs=1000, output='sos')

# 沿着一维过滤数据
filtered_high = signal.sosfilt(sos_high, sig)
filtered_low = signal.sosfilt(sos_low, sig)

ax2.plot(t, filtered_high)
ax2.set_title('20 Hz 高通滤波')
ax2.axis([0, 1, -2, 2])

ax3.plot(t, filtered_low)
ax3.set_title('20 Hz 低通滤波')
ax3.axis([0, 1, -2, 2])
ax3.set_xlabel('Time [seconds]')
plt.tight_layout()

plt.show()

【scipy 基础】--信号处理
从图中可以看出,高通滤波之后的结果接* 30HZ 的波;
低通滤波之后的结果接* 10HZ 的波。

2.2. 图片模糊度示例

图片中的像素也可以看做是二维的信号,所以也可以用滤波器来调整图片的模糊度。

from scipy import signal
import cv2

# 网络上随便找的python logo 图片
fp = "d:/share/python.png"
image = plt.imread(fp)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = np.asarray(gray, np.float64)

fig, ax = plt.subplots(2, 2, sharex=True, sharey=True, figsize=(4, 5))

# 高斯窗口
w1 = signal.windows.gaussian(101, 2.0)
w2 = signal.windows.gaussian(101, 6.0)
# 卷积与二维可分离FIR滤波器
image_new1 = signal.sepfir2d(gray, w1, w1)
image_new2 = signal.sepfir2d(gray, w2, w2)

ax[0][0].imshow(image)
ax[0][0].set_title("原始图片")
ax[0][1].imshow(gray, cmap="gray")
ax[0][1].set_title("灰度图片")

ax[1][0].imshow(image_new1)
ax[1][0].set_title("模糊度较低的图片")
ax[1][1].imshow(image_new2)
ax[1][1].set_title("模糊度较高的图片")

plt.show()

【scipy 基础】--信号处理

3. 总结

总的来说,scipy.signal模块的意义在于它提供了一个统一、强大且灵活的接口,使得对信号进行处理和分析变得相对简单。

它不仅支持基本的信号处理操作,还提供了一些更高级的功能,例如使用不同的窗口函数进行傅立叶变换、使用不同的方法进行滤波等。
此外,它还与NumPy紧密集成,使得用户可以方便地在数组上执行各种操作。文章来源地址https://www.toymoban.com/news/detail-746935.html

到了这里,关于【scipy 基础】--信号处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【TCP/IP】多进程服务器的实现(进阶) - 信号处理及signal、sigaction函数

    目录 信号 signal函数 sigaction函数 用信号来处理僵尸进程          在之前我们学习了如何处理“僵尸进程”,不过可能也会有疑问:调用wait和waitpid函数时我们关注的始终是在子进程上,那么在父进程上如何实现对子进程的管控呢?为此,我们引入一个概念——信号处理。

    2024年02月08日
    浏览(59)
  • 探索Python在信号处理中的威力:Unpingco's Python for Signal Processing库

    项目地址:https://gitcode.com/unpingco/Python-for-Signal-Processing 信号处理是电子工程、信息科学和许多相关领域的核心部分,而Python由于其丰富的库和易读性,已经成为该领域的一个强大工具。 unpingco/Python-for-Signal-Processing 是一个专门针对这一主题的开源项目,旨在提供一套全面的P

    2024年04月10日
    浏览(32)
  • 数字信号处理8:利用Python进行数字信号处理基础

    我前两天买了本MATLAB信号处理,但是很无语,感觉自己对MATLAB的语法很陌生,看了半天也觉得自己写不出来,所以就对着MATLAB自己去写用Python进行的数字信号处理基础,我写了两天左右,基本上把matlab书上的代码全部用Python实现了,所以,今天贴的代码和图有些多, 要用到的

    2024年02月13日
    浏览(38)
  • SAR信号处理基础1——线性调频信号

    :线性调频信号,LFM信号,chirp信号,驻定相位原理(POSP),泰勒展开,Taylor展开,脉冲压缩,匹配滤波,sinc,分辨率,峰值旁瓣比,积分旁瓣比   线性调频(Linear Frequency Signal, LFM)信号在SAR(乃至所有雷达)系统中非常重要,其最主要的特征是瞬时频率是时间的线

    2024年02月15日
    浏览(33)
  • 压力应变桥信号处理系列隔离放大器 差分输入转换直流变送模块

    DIN11 IPO 压力应变桥信号处理系列隔离放大器是一种将差分输入信号隔离放大、转换成按比例输出的直流信号导轨安装变送模块。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等行业。此系列模块内部嵌入了一个高效微功率的电源,向输入端和输出端提供隔

    2023年04月26日
    浏览(48)
  • 数字信号与图像处理实验三:图像处理基础与图像变换

    ​ 通过本实验加深对数字图像的理解,熟悉MATLAB中的有关函数;应用DCT对图像进行变换;熟悉图像常见的统计指标,实现图像几何变换的基本方法。 ​ 选择两幅图像,读入图像并显示,同时使用Matlab计算图像的大小,灰度平均值、协方差矩阵、灰度标准差和相关系数。 DC

    2024年02月04日
    浏览(57)
  • 语音信号处理基础知识之频谱、相位谱、幅度谱、功率谱及语谱图

    一段音频信号在时域上,可以用一个实数向量来表示。这个数组的大小=采样率*音频时长。举个例子:一段采样率为8000,长15.6s的音频在matlab中表示为: 15.6x8000=124800大小的实数向量 下面是利用matlab读取.wav文件和.pcm文件的两种方法 从上图可以看出,音频信号在matlab中就是用一

    2024年02月05日
    浏览(96)
  • 数字信号处理、语音信号处理、现代信号处理

    推荐他的博客: 手撕《数字信号处理》——通俗易懂的数字信号处理章节详解集合 手撕《语音信号处理》——通俗易懂的语音信号处理章节详解集合 手撕《现代信号处理》——通俗易懂的现代信号处理章节详解集合

    2024年02月08日
    浏览(65)
  • 语音信号处理 —— 笔记(一)音频信号处理

      声音的产生 :能量通过声带使其振动产生一股基声音,这个基声音通过声道 ,与声道发生相互作用产生共振声音,基声音与共振声音一起传播出去。 传感器以 某种频率 探测声音的振幅强度以及振动方向,所得到的一系列随时间变化的点。 传感器的探测频率,即为采样

    2023年04月09日
    浏览(50)
  • 仿真与测试:通过Signal Builder模块生成输入信号

    本文研究通过Signal Builder模块生成输入信号的方法。 在汽车的电控软件开发中,经常会在Simulink模型内部进行单元测试。单元测试的本质就是对某一单元(可以是模型级别或者子系统级别)给一组特定的输入信号,通过Simulink仿真得到一组对应的输出信号,然后再与自己期望的

    2023年04月12日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包