标签: fft

iPhone:CPU功率做DSP /傅立叶变换/频域?

我想持续分析MIC音频(不仅仅是一个片段或预先录制的样本),还要显示频率图并滤除音频的某些方面.iPhone足够强大吗?考虑到谷歌和iPhone的语音识别,Shazaam和其他音乐识别应用以及吉他调谐器应用,我怀疑答案是肯定的.但是,我不知道我有什么限制要处理.

有人在这个地方玩吗?

iphone audio signal-processing fft

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

你知道一个好的和有效的FFT吗?

我试图找到一个非常快速和有效的傅里叶变换(FFT).有谁知道任何好的.我需要在iPhone上运行它,所以它不能是密集的.相反,也许你知道一个像小波一样,我需要频率分辨率,但只需要一个窄带(声音音频范围高达10khz最大......甚至10Khz可能太高).我还想到截断这个FFT以保持频率分辨率,同时消除不需要的频带.这是一个iPhone

...我已经看过Aurio touch中的FFT但看起来这是一个int FFT,但是我的应用程序使用了浮点数......它是否会提高性能以尝试使程序适应int FFT或不(我真的不喜欢这样做...加上aurio touch使用基数2 FFT,这不是很好).

iphone fft

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

我的智能手机每秒可以进行多少次FFT?(用于执行语音识别)

我正在探索语音识别和DSP,所以我想在我的智能手机上实现一个简单的声音频率分析仪(我有一部iPhone和三星Nexus S运行Android).我以前在Matlab中完成了基本的DSP.

根据我的理解,我需要执行FFT来获得信号的基频.

所以现在,我想以44100赫兹对麦克风进行采样.如果我使用样本大小为512且具有50%重叠的滑动窗口,则意味着我需要每256个样本进行一次FFT,或0.00580秒.

这个速度似乎非常高,特别是如果我使用Java编写Android版本.我的智能手机能够处理这个速度吗?我知道您可以在Android上使用C/C++进行编程,但我想暂时将它与Java保持一致.

iphone audio android signal-processing fft

8
推荐指数
2
解决办法
4443
查看次数

在R中滑动FFT

R中是否有函数或包用于计算样本的滑动FFT?我的意思是,给定输出fft(x[n:m]),fft(x[1+(n:m)])有效地计算.

理想情况下,我会找到一个在线版本(我在开始时无法访问全时系列,或者它太大而无法放入内存中,我不会尝试将整个运行的FFT保存在内存或者是批处理版本(我给它整个样本x并告诉它运行的窗口宽度w,产生一个复杂的维度矩阵c(w,length(x)/w)).

这里给出了这种算法的一个例子(但我从未试过用任何语言实现它):

http://cnx.org/content/m12029/latest/

如果R中已经没有这样的东西,那我觉得实现起来并不难.

r fft

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

Python SciPy卷积与fftconvolve

我知道一般来说,当阵列比较大时,FFT and multiplication通常比直接convolve操作更快.然而,我正在卷入一个非常长的信号(比如1000万点),响应非常短(比如1000点).在这种情况下,fftconvolve似乎没有多大意义,因为它迫使第二阵列的FFT与第一阵列的大小相同.在这种情况下直接卷积是否更快?

python fft convolution scipy

8
推荐指数
3
解决办法
7505
查看次数

使用scipy.signal.welch找不到合适的能量

对于x(t)具有间距dt(等于1/fs,fs即采样率)的给定离散时间信号,能量为:

E[x(t)] = sum(abs(x)**2.0)/fs
Run Code Online (Sandbox Code Playgroud)

然后我做了一个DFT x(t):

x_tf = np.fft.fftshift( np.fft.fft( x ) ) / ( fs * ( 2.0 * np.pi ) ** 0.5 )
Run Code Online (Sandbox Code Playgroud)

并再次计算能量:

E[x_tf] = sum( abs( x_tf ) ** 2.0 ) * fs * 2 * np.pi / N
Run Code Online (Sandbox Code Playgroud)

(这里因子fs*2*np.pi/N=脉动间距dk,文档fftfreq提供了有关频域间距的更多细节),我有相同的能量:

E[x(t)] = E[x_tf]
Run Code Online (Sandbox Code Playgroud)

但是...当我计算的功率谱密度x(t)使用scipy.signal.welch,我无法找到合适的能量.scipy.signal.welch返回频率f和能量的矢量Pxx(或每个频率的能量,取决于scaling我们在参数中输入的能量scipy.signal.welch).

我怎样才能找到E[x(t)]和 …

python signal-processing numpy fft discrete-mathematics

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

使用傅立叶变换从图像中去除周期性噪声

我正在对特定图像执行2D FFT,并得到其光谱分量.现在,此图像已与另一图像叠加,以产生周期性噪声.

原始图像以及周期性噪声版本如下所示:

原始图像

在此输入图像描述

周期性噪声图像

在此输入图像描述

为了对此进行过滤,我使用了手动盒子来屏蔽幅度谱中相对于其他组件非常大的组件,如下所示.

在此输入图像描述

完成此操作后,我执行逆FFT,但我没有得到原始图像.

在此输入图像描述

有谁知道我做错了什么?

以下是屏蔽这些值的代码,然后继续对屏蔽的光谱图像进行反向2D FFT:

pat1 = imread('Pattern1.png');

spec_orig = fft2(double(pat1));     
spec_orig2 = abs(spec_orig); 
spec_img = fftshift(spec_orig2);

for j = 115:125
    for n = 96:106
        spec_img(n,j) = 0; 
    end
    for n = 216:226
        spec_img(n,j) = 0; 
    end
    for n = 274:284
        spec_img(n,j) = 0; 
    end
    for n = 298:308
        spec_img(n,j) = 0; 
    end
    for n = 12:22
        spec_img(n,j) = 0; 
    end
    for n = 37:47
        spec_img(n,j) = 0; 
    end
end

%Getting Back the Image for …
Run Code Online (Sandbox Code Playgroud)

matlab filtering signal-processing fft image-processing

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

在时间戳数组上使用互相关是否有意义?

我想找到两个时间戳数组之间的偏移量.它们可以代表两个音轨中的哔哔声.

注意:两个轨道中可能有额外或缺少的开始.

我找到了一些关于互相关的信息(例如https://dsp.stackexchange.com/questions/736/how-do-i-implement-cross-correlation-to-prove-two-audio-files-are-similar)看起来很有希望.

我假设每个音轨的持续时间为10秒,并将哔哔声表示为"方波"的峰值,采样率为44.1 kHz:

import numpy as np

rfft = np.fft.rfft
irfft = np.fft.irfft

track_1 = np.array([..., 5.2, 5.5, 7.0, ...])
# The onset in track_2 at 8.0 is "extra," it has no
# corresponding onset in track_1
track_2 = np.array([..., 7.2, 7.45, 8.0, 9.0, ...])
frequency = 44100
num_samples = 10 * frequency
wave_1 = np.zeros(num_samples)
wave_1[(track_1 * frequency).astype(int)] = 1
wave_2 = np.zeros(num_samples)
wave_2[(track_2 * frequency).astype(int)] = 1
xcor = irfft(rfft(wave_1) * np.conj(rfft(wave_2)))
offset …
Run Code Online (Sandbox Code Playgroud)

python waveform fft cross-correlation

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

不确定如何将FFT数据用于频谱分析仪

我正在尝试用8条LED制作自制频谱分析仪.

我正在努力的部分是执行FFT并了解如何使用结果.

到目前为止,这就是我所拥有的:

import opc
import time
import pyaudio
import wave
import sys
import numpy
import math

CHUNK = 1024

# Gets the pitch from the audio
def pitch(signal):
  # NOT SURE IF ANY OF THIS IS CORRECT
  signal = numpy.fromstring(signal, 'Int16');
  print "signal = ", signal

  testing = numpy.fft.fft(signal)
  print "testing = ", testing

wf = wave.open(sys.argv[1], 'rb')
RATE = wf.getframerate()
p = pyaudio.PyAudio() # Instantiate PyAudio

# Open Stream
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                channels=wf.getnchannels(),
                rate=wf.getframerate(),
                output=True)

# Read data …
Run Code Online (Sandbox Code Playgroud)

python numpy fft

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

在大文件上执行FFT的最快方法是什么?

我正在开发一个需要在大型2D栅格数据(10到100 GB)上执行FFT的C++项目.特别是,当为每个列应用FFT时性能非常糟糕,每个列的元素在内存中不是连续的(放置在数据宽度的跨度上).

目前,我正在这样做.由于数据不适合存储器,我将几列(即n列)读入存储器并调整其方向(使文件中的列成为存储器中的一行)并应用FFT与外部库(MKL) .我读取(fread)n像素,移动到下一行(fseek尽可能多width - n),读取n像素,跳转到下一行,依此类推.当使用列块完成操作(FFT)时,我以相同的方式将其写回文件.我写n像素,跳到下一行,依此类推.这种读写文件的方式花费了太多时间,所以我想找到一些方法来提升它.

我已经考虑过事先调换整个文件,但整个过程包括行主要和列主要的FFT操作,并且转置不会受益.

我想听听有关大数据的这种列主要操作的任何经验或想法.任何与FFT或MKL相关的建议也会有所帮助.

c++ fft large-data intel-mkl

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