我很好奇,如果有一些连续的值(例如,在之间有x的y值),以及如果可以为用于获得任意近似的算法设置一个精度,那么什么才是重建函数的有效方法。
我偶然发现了用Fourier级数重构这些函数的可能性,但是对于如何在C#中自己实现这些函数,我非常不确定。其目的是通过做而不是使用现有的库来学习。关于如何(大致)建立一个函数的任何其他建议也是受欢迎的。为了在运行时创建函数,我考虑了元编程(使用Expression)。
编辑: For Fourier级数,我发现了一个相关的问题加上。然而,所提供的解决方案是在Mathematica中提供的,并使用其库。
我试图用Python实现卷积神经网络。
但是,当我使用signal.convolve或np.convolve时,它不能对X,Y(X是3d,Y是2d)进行卷积。X正在训练小型批次。Y是过滤器。我不想为每一个训练向量做循环,比如:
for i in xrange(X.shape[2]):
result = signal.convolve(X[:,:,i], Y, 'valid')
....
那么,我能用什么函数有效地进行卷积吗?
我需要用卷积定理计算卷积积。但是,我不明白为什么我需要在逆傅里叶变换上应用fftshift来得到正确的结果。否则,结果会被交换(嗯,我知道这就是产生fftshift的原因,但我不明白为什么我从反fft中得到一个交换的结果)。下面是一个很小的例子,它的两个函数减少得很快,这样我就不用再麻烦填充了。结果将与scipy.signal.convolve进行检查。
import numpy as np
import scipy.signal as sig
Nx = 400
xp = np.arange(Nx) - Nx/2.
Lg = 20
Lb = 2
我正在尝试对我的数据集执行Scipy FFT。基本上,我在时域中有加速度(通过数值获得),我只是试图执行傅立叶变换,以获得频谱。我有一个傅立叶变换加速度在小频率极限和大频率极限下的理论表达式。对于较大的频率,傅立叶变换的加速度应呈指数下降。然而,在最初的衰减之后,我在图中得到了一个谷。下面是我的代码和图表
a_w = []
for k in range(len(b)): # b is paramter to be varied
window = signal.kaiser(N, 30) # I am not sure about using Kaiser wind
ft = fft(
这是一个不完整的Python代码片段,它使用FFT进行卷积。
我想修改它,使它支持,1)有效卷积2)和完全卷积。
import numpy as np
from numpy.fft import fft2, ifft2
image = np.array([[3,2,5,6,7,8],
[5,4,2,10,8,1]])
kernel = np.array([[4,5],
[1,2]])
fft_size = # what size should I put here for,
# 1) va