Skip to content

服务器托管,北京服务器托管,服务器租用-价格及机房咨询

Menu
  • 首页
  • 关于我们
  • 新闻资讯
  • 数据中心
  • 服务器托管
  • 服务器租用
  • 机房租用
  • 支持中心
  • 解决方案
  • 联系我们
Menu

【scipy 基础】–信号处理

Posted on 2023年11月21日 by hackdl

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()

然后将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()


从图中可以看出,高通滤波之后的结果接* 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()

3. 总结

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

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

服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net

相关推荐: 【分段传输】c#使用IAsyncEnumerable实现流式分段传输

引言     在使用SSE的时候,前端可以实现流式传输,但是有个问题就是这是一个独占的连接,相当于如果你不手动关闭连接,就会一直请求,一直连接调用接口,而且发送的数据格式也是按照定义好的协议来,而使用c#自带的IAsyncEnumerable也可以实现流式传输…

Related posts:

  1. 大带宽服务器租用提供商
  2. 广东IDC网汕头:高效托管平台
  3. 数北数字北京idc数据中心
  4. 全面调查:山西香港服务器托管企业排名
  5. 华山服务器托管服务:高效稳定的数据存储方案

服务器托管,北京服务器托管,服务器租用,机房机柜带宽租用

服务器托管

咨询:董先生

电话13051898268 QQ/微信93663045!

上一篇: 谁能从MES中获益
下一篇: 基于OpenCV的灰度图的图片相似度计算

最新更新

  • 深度解读DBSCAN聚类算法:技术与实战全解析
  • #yyds干货盘点#深入了解Python类与面向对象编程
  • 企业级即时通讯系统的领跑者,WorkPlus引领沟通协作创新潮流
  • windows使用FindWindow函数查找窗口句柄
  • 两亿大奖,一夜暴富,江西彩票、概率学、阴谋论暨景观社会

随机推荐

  • CentOS 7 安装 Tomcat
  • 香港服务器机柜租用
  • ERP、CRM、SRM、PLM、HRM、OA……都
  • 安庆服务器托管价格报价表
  • 几个 Python 语法糖的实现

客服咨询

  • 董先生
  • 微信/QQ:93663045
  • 电话:13051898268
  • 邮箱:dongli@hhisp.com
  • 地址:北京市石景山区重聚园甲18号2层

友情链接

  • 服务器托管
  • 机房租用托管
  • 服务器租用托管
©2023 服务器托管,北京服务器托管,服务器租用-价格及机房咨询 京ICP备13047091号-8