小编Mat*_*lis的帖子

如何使用可变宽度高斯在python中执行卷积?

我需要使用高斯执行卷积,但高斯的宽度需要改变.我不是在做传统的信号处理,而是根据设备的分辨率,我需要采用完美的概率密度函数(PDF)和"涂抹"它.

例如,假设我的PDF作为尖峰/增量函数开始.我将其建模为非常窄的高斯.在通过我的设备运行后,它将根据一些高斯分辨率被涂抹掉.我可以使用scipy.signal卷积函数来计算它.

    import numpy as np
    import matplotlib.pylab as plt

    import scipy.signal as signal
    import scipy.stats as stats

    # Create the initial function. I model a spike
    # as an arbitrarily narrow Gaussian
    mu = 1.0 # Centroid
    sig=0.001 # Width
    original_pdf = stats.norm(mu,sig)

    x = np.linspace(0.0,2.0,1000) 
    y = original_pdf.pdf(x)
    plt.plot(x,y,label='original')


    # Create the ``smearing" function to convolve with the
    # original function.
    # I use a Gaussian, centered at 0.0 (no bias) and
    # width of 0.5
    mu_conv = …
Run Code Online (Sandbox Code Playgroud)

python signal-processing resolution convolution probability-density

8
推荐指数
1
解决办法
3666
查看次数

Cython的新功能...似乎无法正确包装枚举

我是Cython的新手,但我正在努力学习更多内容,因为我希望能够直接从Python调用一组相当大而复杂的C/C++代码.

我已经能够完成这些示例,甚至可以包装我正在工作的主要项目的一小部分.但我已经坚持包装枚举.

我试图在一个非常简单的例子中突破我正在尝试的东西.

这是myenum.h中的C代码

// myenum.h
enum strategy {
    slow = 0,
    medium = 1,
    fast = 2
};
Run Code Online (Sandbox Code Playgroud)

以下是我认为在pymyenum.pyx中作为wapper工作的内容

# distutils: language = c
cdef extern from "myenum.h" namespace "myenum":
    cdef enum strategy:
        slow,
        medium,
        fast
Run Code Online (Sandbox Code Playgroud)

这是我的setup.py

from distutils.core import setup
from Cython.Build import cythonize

setup(ext_modules = cythonize(
    "pymyenum.pyx",                 # our Cython source
    sources=["myenum.h"],  # additional source file(s)
    language="c",             # generate C code
    ))
Run Code Online (Sandbox Code Playgroud)

在这个目录中,我运行

python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)

我得到了我的pymyenum.so,我可以导入!是啊!但我无法访问策略.

In [1]: import pymyenum

In [2]: pymyenum.
pymyenum.c    pymyenum.pyx …
Run Code Online (Sandbox Code Playgroud)

c c++ python enums cython

6
推荐指数
1
解决办法
1406
查看次数