我需要使用高斯执行卷积,但高斯的宽度需要改变.我不是在做传统的信号处理,而是根据设备的分辨率,我需要采用完美的概率密度函数(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
我是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)