首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

scipy.signal 信号-卷积

数字信号处理作为 信息与计算科学专业与电子信息科学专业的基础课, 可以说尤为重要, 而且覆盖面广. 对数学分析功底的要求较为深刻.

scipy.signal 将其分为如下小块

Convolution卷积

B-splinesB 样条

Filter Design滤波设计

Continuous-Time Linear Systems连续时间线性系统

Discrete-Time Linear Systems离散时间线性系统

LTI RepresentationsLTI 表示

Wavelets小波分析

Peak finding峰值点

Spectral Analysis谱分析

以及电脑系统的弹窗包 Windows

# 卷积:

#一维卷积signal.convolve(in1, in2, mode='full', method='auto')

参数介绍

in1第一信号

in2第二信号

mode输出模式

``full`` 输出为满离散线性卷积

``valid`` 与 in1或in2 相同维度,输出不依赖于 小波零填充

``same``与in1维度相同

method 卷积方法

"fft" 快速傅立叶法

''direct'' 定义法

"auto" 自动选择fft或者direct法

from scipy import signal

import numpy as np

import matplotlib.pyplot as plt

t=np.arange(-1,1,0.1)

n=t.size

in1=1-t**2

in2=np.zeros(n)

for i in range(n):

in2[i]=1-abs(round(t[i]))

filtered=signal.convolve(in1, in2, mode='same')/sum(in2)

plt.plot(filtered)

plt.plot(in1,'o-')

plt.plot(in2,'o-')

plt.show()

# 二维卷积 convolve2d(in1, in2, mode='full', boundary='fill', fillvalue=0) 通常用于图像处理

from scipy import misc

ascent = misc.ascent()

scharr = np.array([[ 1, 3, 1],[3, 10, 3],[1,3,1]]) # Gx + j*Gy

grad = signal.convolve2d(ascent, scharr, boundary='symm', mode='same')

fig, (ax_orig, ax_mag, ax_ang) = plt.subplots(1, 3, figsize=(12, 30))

ax_orig.imshow(ascent, cmap='gray')

ax_ang.imshow(, cmap='gray')

plt.show()

调用自己的图像请参照链接:scipy.misc 图像处理包

fftconvolve与convolve用法类似, 但是只能使用傅立叶卷积

一维互相关correlate(in1, in2, mode='full', method='auto')

调用参数基本与convolve类似

二维互相关 correlate2d(in1, in2, mode='full', boundary='fill', fillvalue=0)

调用参数基本与convolve2d类似

#sepfir2d()可分卷积变换

from scipy import signal

from scipy import misc

import numpy as np

import matplotlib.pyplot as plt

ascent = misc.ascent()

hrol=np.sin(np.linspace(0,np.pi*2,64))

hcol=np.cos(np.linspace(0,np.pi*2,64))

g=signal.sepfir2d(ascent,hrol,hcol)

plt.subplot(1,2,1)

plt.imshow(g)

plt.title('sepfir2d')

plt.subplot(1,2,2)

plt.imshow(ascent)

plt.title('origin')

plt.show()

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180225G0L4TB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券