标签: fft

Python中基于FFT的2D卷积和相关

是否有基于FFT的2D互相关或卷积函数内置于scipy(或其他流行的库)?

有这样的功能:

  • scipy.signal.correlate2d- "实施的直接方法convolveND对于大数据来说会很慢"
  • scipy.ndimage.correlate - "使用精确计算(即不是FFT)将数组与给定内核相关联."
  • scipy.fftpack.convolve.convolve,我真的不明白,但似乎错了

numarray有一个correlate2d()fft=True开关功能,但我猜numarray被折叠成numpy,我无法找到是否包含此功能.

python signal-processing numpy image fft

21
推荐指数
3
解决办法
3万
查看次数

在智能手机上音符识别音符

有限的资源,如较慢的CPU,代码大小和RAM,如何最好地检测音符的音高,类似于电子或软件调谐器会做什么?

我应该使用:

  • 吻FFT
  • FFTW
  • 离散小波变换
  • 自相关
  • 零交叉分析
  • 八度间隔滤波器

其他?

简而言之,我要做的是识别单个音符,在中间C到两个八度音程之上的两个八度音阶,在任何(合理的)乐器上演奏.我希望在半音的20%范围内 - 换句话说,如果用户播放太平或太尖锐,我需要区分它.但是,我不需要调整所需的准确度.

audio signal-processing fft pitch-tracking

21
推荐指数
5
解决办法
1万
查看次数

DSP - 通过FFT在频域中进行滤波

我一直在使用FFT的Exocortex实现,但我遇到了一些问题.

每当我在调用iFFT之前修改频率区间的幅度时,结果信号包含一些咔嗒声和砰砰声,特别是当信号中存在低频时(如鼓或低音).但是,如果我用相同的因子衰减所有的箱子,就不会发生这种情况.

让我举一个4样本FFT输出缓冲区的例子:

// Bin 0 (DC)
FFTOut[0] = 0.0000610351563
FFTOut[1] = 0.0

// Bin 1
FFTOut[2] = 0.000331878662
FFTOut[3] = 0.000629425049

// Bin 2
FFTOut[4] = -0.0000381469727
FFTOut[5] =  0.0

// Bin 3, this is the first and only negative frequency bin.
FFTOut[6] =  0.000331878662
FFTOut[7] = -0.000629425049
Run Code Online (Sandbox Code Playgroud)

输出由成对的浮点组成,每个浮点数代表单个bin的实部和虚部.因此,bin 0(数组索引0,1)将代表DC频率的实部和虚部.正如你所看到的,第1和第3个箱子都有相同的值(除了Im部分的符号),所以我猜bin 3是第一个负频率,最后索引(4,5)将是最后的正值频率仓.

然后,为了衰减频率仓1,这就是我所做的:

// Attenuate the 'positive' bin
FFTOut[2] *= 0.5;
FFTOut[3] *= 0.5;

// Attenuate its corresponding negative bin.
FFTOut[6] *= 0.5;
FFTOut[7] *= 0.5;
Run Code Online (Sandbox Code Playgroud)

对于实际测试,我使用1024长度的FFT,我总是提供所有样本,因此不需要0填充.

// Attenuate
var …
Run Code Online (Sandbox Code Playgroud)

filtering signal-processing fft dft

20
推荐指数
2
解决办法
2万
查看次数

如何计算Numpy的傅立叶级数?

我有周期T的周期函数,想知道如何获得傅立叶系数列表.我尝试从numpy 使用fft模块,但它似乎更专注于傅立叶变换而不是系列.也许它缺乏数学知识,但我看不出如何从fft计算傅里叶系数.

帮助和/或示例表示赞赏.

python numpy fft

20
推荐指数
4
解决办法
4万
查看次数

为什么在构建音频信号的功率谱时需要对窗口函数应用窗口函数?

我已经多次找到了以下获取音频信号功率谱的指南:

  • 收集N个样本,其中N是2的幂
  • 对样本应用合适的窗函数,例如汉宁
  • 将窗口样本传递给FFT例程 - 理想情况下,您需要一个实际到复数的FFT,但如果您只有一个是复杂到复杂的FFT,则为所有虚拟输入部分传递0
  • 计算FFT输出箱的平方幅度(re*re + im*im)
  • (可选)计算每个幅度平方输出仓的10*log10,得到以dB为单位的幅度值
  • 现在你已经拥有了你的功率谱,你只需要确定峰值,如果你有一个合理的信噪比,这应该非常简单.注意,频率分辨率随着N的增大而提高.对于上述44.1kHz采样率和N = 32768的示例,每个箱的频率分辨率为44100/32768 = 1.35Hz.

但是......为什么我需要对样本应用窗口函数?这到底意味着什么?

功率谱怎么样,它是采样率范围内每个频率的功率?(例如:windows media player声音可视化器?)

audio signal-processing fft spectrum window-functions

20
推荐指数
4
解决办法
2万
查看次数

Shazam或Sound Hound如何运作?

我正在使用SDK for iOS 5.0和XCode 4.2开发iOS应用程序.

我想开发一个识别声音的应用程序.我看到有一个名为Sound Hound的应用程序可以识别音乐并告诉艺术家和标题.

我怎么能做类似的事情?我想将声音与现有声音数据库进行比较.我怎样才能做到这一点?

也许我可以使用傅立叶变换.我不知道如何处理声音.或者它可能类似于语音识别,不是吗?

audio speech-recognition signal-processing fft ios

20
推荐指数
2
解决办法
2万
查看次数

从相位和幅度进行傅里叶变换 - Matlab

傅立叶变换F的幅度和相位定义为:

Mag = sqrt(Real(F)^2 + Imaginary(F)^2)
Run Code Online (Sandbox Code Playgroud)

Phase = arctan(Imaginary(F)/Real(F))
Run Code Online (Sandbox Code Playgroud)

我曾尝试编写matlab代码,该代码采用灰度图像矩阵,对矩阵执行fft2(),然后根据变换计算幅度和相位.然后我想计算傅里叶变换的虚部和实部.这是通过将前两个方程重新排列为:

Real = Mag/sqrt(1 + tan(Phase)^2)
Run Code Online (Sandbox Code Playgroud)

Imaginary = Real*tan(Phase)
Run Code Online (Sandbox Code Playgroud)

最后组合和逆fft2:

F = Real + i*Imaginary
image = ifft2(F)
Run Code Online (Sandbox Code Playgroud)

我希望看到与输入相同的图像,但我得到了垃圾.我的数学错了吗?我的matlab mfile代码如下:

function y = forwardBackwardFFT(image)

F = fft2(image);
mag = sqrt(real(F).^2 + imag(F).^2);
phase = atan(imag(F)./real(F));

re = sqrt((mag.^2)./(1 + tan(phase).^2));
im = re.*tan(phase);
F = re + i*im;
f = ifft2(F);

subplot(1,2,1);
imshow(image);
Title('Original Image');

subplot(1,2,2);
imshow(f);
Title('Image after forward and backward FFT');
y = f;
Run Code Online (Sandbox Code Playgroud)

非常感谢 :)

matlab signal-processing fft image-processing

19
推荐指数
1
解决办法
3万
查看次数

与realspace卷积相比,FFT卷积的缺点是什么?

所以我知道FFT的卷积比现实空间中的卷积具有更低的计算复杂度.但是FFT卷积的缺点是什么?

内核大小是否始终必须与图像大小匹配,或者是否有用于处理此问题的函数,例如在pythons numpy和scipy包中?那么抗锯齿效果呢?

signal-processing numpy fft convolution scipy

19
推荐指数
2
解决办法
1万
查看次数

Clojure/Java:用于声音频谱分析的Java库?

我正在寻找一个可以接受一大块音频数据并在给定频段内返回平均幅度的库.

我已经在comp.dsp上问了这个问题,但我很清楚,使用基本的FFT库获取自己构建这个问题的技术诀窍将需要比现在更多的时间和精力.以下是我的原始问题以及更多详情:http://groups.google.com/group/comp.dsp/browse_thread/thread/e04f78d439e9e2bd

我发现了许多用于播放声音的漂亮库(过去我使用过JSyn),但似乎没有设置它们来返回有关声音样本的快速和脏的光谱信息.

任何指针都将非常感激.

java audio fft clojure spectrum

18
推荐指数
1
解决办法
2万
查看次数

如何过滤FFT数据(用于音频可视化)?

我正在看这个Web Audio API演示,这本好书的一部分

如果你看一下演示,fft峰值会顺利下降.我正在尝试使用minim库来处理Java模式下的Processing.我已经看过如何使用doFFTAnalysis()方法中的web音频api完成此操作,并尝试使用minim复制它.我还尝试移植abs()如何处理复杂类型:

/ 26.2.7/3 abs(__z):  Returns the magnitude of __z.
00565   template<typename _Tp>
00566     inline _Tp
00567     __complex_abs(const complex<_Tp>& __z)
00568     {
00569       _Tp __x = __z.real();
00570       _Tp __y = __z.imag();
00571       const _Tp __s = std::max(abs(__x), abs(__y));
00572       if (__s == _Tp())  // well ...
00573         return __s;
00574       __x /= __s; 
00575       __y /= __s;
00576       return __s * sqrt(__x * __x + __y * __y);
00577     }
00578 …
Run Code Online (Sandbox Code Playgroud)

java audio processing visualization fft

18
推荐指数
1
解决办法
9165
查看次数