为了确保数值稳定性,scipy.signal.deconvolve 的除数参数有哪些限制?

2024-03-24

这是我的问题:我将处理来自系统的数据,我将很好地了解该系统的脉冲响应。之前使用 Python 进行过一些基本脚本编写,我开始了解 scipy.signal.convolve 和 scipy.signal.deconvolve 函数。为了对我的最终解决方案有信心,我想了解他们的要求和限制。

我使用了以下测试:
1. 我构建了一个由两个高斯组成的基本信号。
2. 我建立了一个高斯脉冲响应。
3. 我将初始信号与该脉冲响应进行卷积。
4. 我对这个卷积信号进行了去卷积。
5. 我将最后一个信号与最初的信号进行了比较。
该测试的结果很大程度上取决于我如何定义脉冲响应:要么我设法恢复我的初始信号,要么解卷积后的信号严重发散。

这是代码:
我使用 python 3.4.2、numpy 1.8.2 和 scipy 0.14.0。

import numpy as np  
from scipy import signal  


def gauss(x, amp = 1, mean = 0, sigma = 1):  
    return amp * np.exp(-(x - mean)**2 / (2 * sigma**2))  


step = 0.1  
x_os = np.arange(0, 200 + step, step)  
low = -5 # lower bound of the interval for the impulse response
up = 5  # upper bound of the interval for the impulse response
x_ir = np.arange(low, up + step, step)  

y_os1 = gauss(x_os, 160, 80, 5.0)  
y_os2 = gauss(x_os, 20, 20, 2.0)  
y_os = y_os1 + y_os2 # original signal  

y_ir = gauss(x_ir, 1 / (np.sqrt(2 * np.pi)), 0.0, 1.0) # impulse response 

y_c = signal.convolve(y_os, y_ir, 'full') # convoluted signal

y_d, _ = signal.deconvolve(y_c, y_ir) # deconvoluted signal

在前面的代码中,scipy.signal.deconvolve 的除数参数是 y_ir。我使用了定义 y_ir 定义间隔的参数,例如[低、上、步]。为了告诉你什么让我困惑,让我们看以下三组:
1) [-5, 5, 0.1],
2) [-2, 2, 0.1],
3) and [-2, 2, 0.5](请注意,y_os 的定义中的步骤未更改)。

下图显示了上述三个集合的原始信号以及去卷积信号。
原始信号 https://i.stack.imgur.com/BkwQ6.png
解卷积信号的比较 https://i.stack.imgur.com/kqxen.png

谁能解释这种行为?有没有什么要求divisor保证这个函数的正确行为?

先感谢您。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为了确保数值稳定性,scipy.signal.deconvolve 的除数参数有哪些限制? 的相关文章

  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • 如何收集列表、字典等中重复计算的结果(或制作修改每个元素的列表的副本)?

    There are a great many existing Q A on Stack Overflow on this general theme but they are all either poor quality typical
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐