Questions tagged «fft»

快速傅立叶变换是一种有效的算法,可以计算离散傅立叶变换(DFT)及其逆。


3
为什么通过将FFT bin归零进行过滤是个坏主意?
通过对信号执行FFT,将部分信号归零,然后执行IFFT来过滤信号非常容易。例如: t = linspace(0, 1, 256, endpoint=False) x = sin(2 * pi * 3 * t) + cos(2 * pi * 100 * t) X = fft(x) X[64:192] = 0 y = ifft(X) 该“砖墙” FFT滤波器完全消除了高频成分。 但是我听说这不是一个好方法。 为什么通常是个坏主意? 在某些情况下,这是个好选择吗? [ 如画册所建议 ]
72 fft  filters 


9
有没有找到无需DFT或FFT的频率的算法?
我在Android应用商店中寻找吉他调音器。我发现一个调谐器应用程序声称它比其他应用程序更快。它声称无需使用DFT就可以找到频率(我希望我仍然有该规范的URL)。 我从来没有听说过这个。您可以在不使用DFT或FFT算法的情况下获取音频信号并计算频率吗?
34 audio  fft  frequency  dft 

3
为加速度计数据选择正确的滤波器
我对DSP相当陌生,并且已经对用于平滑python中的加速度计数据的可能过滤器进行了一些研究。下图显示了一个疾病类型的示例: 本质上,我正在寻求有关平滑数据以最终将其转换为速度和位移的建议。我了解到手机的加速度计非常嘈杂。 我认为目前无法使用卡尔曼滤波器,因为我无法握住该设备来引用数据产生的噪声(我读到将设备放平并从这些读数中找到噪声的数量很重要吗?) FFT产生了一些有趣的结果。我的尝试之一是对加速度信号进行FFT,然后渲染低频使其FFT绝对值为0。然后,我使用了ω算术和逆FFT来获得速度图。结果如下: 这是处理事情的好方法吗?我正在尝试消除信号的整体噪声性质,但是需要识别明显的峰值,例如在80秒左右。 我还对原始的加速度计数据使用低通滤波器感到疲倦,这在平滑数据方面做得很好,但是我不确定从何而来。关于从这里出发的任何指导都将非常有帮助! 编辑:一点点代码: for i in range(len(fz)): testing = (abs(Sz[i]))/Nz if fz[i] < 0.05: Sz[i]=0 Velfreq = [] Velfreqa = array(Velfreq) Velfreqa = Sz/(2*pi*fz*1j) Veltimed = ifft(Velfreqa) real = Veltimed.real 因此,本质上,我对加速度计数据执行了FFT,使用简单的砖墙滤波器将Sz滤波后的高频输出出去(我知道这并不理想)。然后对数据的FFT使用欧米茄算法。也非常感谢datageist将我的图片添加到我的帖子中:)
28 fft  python 

5
这种简单的信号平滑方法是否有技术术语?
首先,我是DSP的新手,没有任何实际知识,但是我正在开发一个音频可视化程序,并且像典型的频谱可视化一样,我将FFT数组表示为竖线。 我的问题是,如果我直接映射FFT值,音频信号值变化太快而无法产生令人愉悦的视觉输出: 因此,我对这些值应用了一个简单的函数,以便“平滑”结果: // pseudo-code delta = fftValue - smoothedFftValue; smoothedFftValue += delta * 0.2; // 0.2 is arbitrary - the lower the number, the more "smoothing" 换句话说,我正在获取当前值并将其与最后一个值进行比较,然后将该增量的一部分添加到最后一个值。结果看起来像这样: 所以我的问题是: 这是一个已经存在的完善的模式或功能吗?是的,这是什么意思?我在上面使用了“平滑”功能,但是我知道这意味着DSP中的某些功能非常具体,可能不正确。除此之外,它似乎与容量包络有关,但也不完全相同。 我是否应该寻找更好的方法或进一步研究解决方案? 感谢您的时间和歉意,如果这是一个愚蠢的问题(在这里阅读其他讨论,我知道我的知识比平均水平低很多)。

4
小波变换计算哪些时间频率系数?
该问题是从Stack Overflow 迁移而来的,因为可以在Signal Processing Stack Exchange上回答。 迁移 8年前。 该快速傅立叶变换需要操作,而快速小波变换需要。但是,FWT具体计算什么呢?O(N )ø(Ñ日志ñ)O(Nlog⁡N)\mathcal O(N \log N)ø(Ñ)O(N)\mathcal O(N) 尽管经常将它们进行比较,但FFT和FWT似乎是苹果和橘子。据我了解,将STFT(随时间变化的小块FFT)与复杂的Morlet WT进行比较会更合适,因为它们都是基于复杂正弦波的时频表示(如果我错了,请纠正我) )。通常以如下图显示: (另一个例子) 左图显示STFT如何随时间推移彼此堆叠在一起的一堆FFT(此表示形式是频谱图的起点),而右图显示二进线WT,其在高频和更高频率下具有更好的时间分辨率低频下的分辨率(此表示称为比例图)。在此示例中,STFT的是垂直列数(6),并且单个 FFT运算可从样本中计算出系数的单个行。总共是8个FFT,每个6点,或时域中的48个采样。O(N log N )N NñNNø(Ñ日志ñ)O(Nlog⁡N)\mathcal O(N \log N)ñNNñNN 我不明白的是: 单个 FWT数学运算可以计算多少个系数,它们在上面的时频图上位于什么位置? ø(Ñ)O(N)\mathcal O(N) 一次计算可以填充哪些矩形? 如果我们使用这两者来计算等时的时频系数块,是否可以获得相同数量的数据? FWT是否仍比FFT效率更高? 使用PyWavelets的具体示例: In [2]: dwt([1, 0, 0, 0, 0, 0, 0, 0], 'haar') Out[2]: (array([ 0.70710678, …
26 frequency  fft  wavelet 

1
重叠添加与重叠保存
可以使用哪些差异或其他标准来帮助决定使用重叠添加和重叠保存进行过滤?重叠添加和重叠保存都被描述为用于使用FIR滤波器内核对数据流进行基于FFT的快速卷积的算法。延迟,计算效率或缓存局部性(等等)的差异是什么?还是一样?

1
适用于Python初学者的低通滤波器和FFT
我对信号处理尤其是FFT还是陌生的,因此不确定在这里是否做正确的事情,我对结果有些困惑。 我有一个离散的实函数(测量数据),并想在其上设置一个低通滤波器。选择的工具是带有numpy软件包的Python。我遵循以下过程: 计算我的函数的英尺 切断高频 执行反函数 这是我正在使用的代码: import numpy as np sampling_length = 15.0*60.0 # measured every 15 minutes Fs = 1.0/sampling_length ls = range(len(data)) # data contains the function freq = np.fft.fftfreq(len(data), d = sampling_length) fft = np.fft.fft(data) x = freq[:len(data)/2] for i in range(len(x)): if x[i] > 0.005: # …

4
如何区分声音与打nor?
背景: 我正在开发一个iPhone应用程序(在 其他几篇 文章中都有介绍),该应用程序在一个人入睡时“听着”打呼//呼吸,并确定是否存在睡眠呼吸暂停的迹象(作为“睡眠实验室”的预屏幕)测试)。该应用程序主要使用“频谱差异”来检测打sn /呼吸,并且在针对睡眠实验室记录(实际上是非常嘈杂的)进行测试时,效果很好(大约为0.85--0.90)。 问题: 我可以通过多种技术过滤掉大多数“卧室”噪音(风扇等),并且经常以人耳无法检测到的S / N级别可靠地检测到呼吸。问题是语音噪音。在后台运行电视或广播(或者只是在远处说话的人)并不罕见,并且声音的节奏与呼吸/打呼closely紧密匹配。实际上,我通过该应用程序记录了已故作者/讲故事者比尔·霍尔姆(Bill Holm)的录音,与打的节奏,水平变化和其他几种测量方法基本上没有区别。(尽管我可以说他显然没有睡眠呼吸暂停,至少在清醒时没有。) 因此,这是一个远景(可能是一系列的论坛规则),但是我正在寻找一些有关如何区分声音的想法。我们不需要以某种方式过滤掉打ore声(这会很好),但是我们只需要一种方法来拒绝被声音过度污染的“太吵”的声音。 有任何想法吗? 发布的文件:我已经在dropbox.com上放置了一些文件: Epica_Storm_the_Noisy_Sorrow_minus_10dB_wav.dat Holm_5db_noisy_wav.dat recordFile20120408010300_first_ten_wav.dat 第一个是相当随机的摇滚(我猜)音乐,第二个是已故的Bill Holm讲话的录音。两者(我将其作为“噪声”样本从打nor中区分出来)都与噪声混合在一起,以使信号模糊。(这使识别它们的任务变得更加困难。)第三档是您的录音的十分钟,真正的三分之一是呼吸,打middle混合,最后三分之一是稳定的打nor。(您咳嗽会得到奖金。) 这三个文件都已从“ .wav”重命名为“ _wav.dat”,因为许多浏览器都使下载wav文件异常困难。下载后,只需将它们重命名为“ .wav”即可。 更新:我以为熵对我来说就是“把戏”,但事实证明,这主要是我所使用的测试用例的特殊性,以及设计得不太好的算法。在一般情况下,熵对我无能为力。 随后,我尝试了一种技术,该技术可以计算每秒采样约8次的整体信号幅度(我尝试过功率,频谱通量和其他多种测量方法)的FFT(使用几种不同的窗口函数)(取自主要FFT周期的统计信息)这是每1024/8000秒)。对于1024个样本,这涵盖了大约两分钟的时间范围。我希望由于打/呼吸与声音/音乐的节奏较慢,我能够看到这种模式(而且它可能也是解决“ 可变性 ”问题的更好方法),但是尽管有提示到处都是模式,没有什么我可以真正锁定的。 (进一步的信息:在某些情况下,信号幅度的FFT会产生一个非常明显的模式,在0.2Hz处有一个很强的峰值,并产生阶跃谐波。可能有某种方法可以计算品质因数的相关值,但似乎需要对约4阶多项式进行曲线拟合,而在手机中每秒进行一次拟合似乎是不切实际的。) 我还尝试对将频谱划分为5个单独的“频段”进行相同的平均幅度FFT。波段是4000-2000、2000-1000、1000-500和500-0。前4个频段的模式通常与总体模式相似(尽管没有真正的“突出”频段,并且在较高频段中的信号通常消失得很小),但500-0频段通常只是随机的。 赏金: 鉴于内森(Nathan)是迄今为止最有成效的建议,尽管纳森(Nathan)没有提供任何新的东西,我还是要给予赏金。但是,如果他们提出了一些好主意,我仍然愿意将其奖励给其他人。


3
时域中的延迟对频域有什么影响?
如果我有时间限制的信号,比如说只持续秒的正弦波,然后对该信号进行FFT,就会看到频率响应。在该示例中,这将是正弦波主频率上的尖峰。TTT 现在,假设我获取了相同的时间信号,并将其延迟了一定的时间常数,然后进行了FFT,情况如何变化?FFT是否可以表示该时间延迟? 我认识到,时间的延迟表示在频域上的变化,但我有一个很难确定哪些实际手段。exp(−jωt)exp⁡(−jωt)\exp(-j\omega t) 实际上,频域是否适合确定各种信号之间的时间延迟?

2
提高Python的频谱图分辨率?
我正在使用该specgram()函数在matplotlibPython中生成语音波文件的频谱图,但输出的质量始终比我的普通转录软件Praat生成的质量差很多。例如,以下调用: specgram( fromstring(spf.readframes(-1), 'Int16'), Fs=framerate, cmap=cm.gray_r, ) 生成此: 在Praat期间,使用以下设置处理相同的音频样本: 查看范围:0-8000Hz 窗长:0.005s 动态范围:70dB 时间步长:1000 频率步进:250 窗口形状:高斯 生成此: 我究竟做错了什么?我尝试摆弄所有specgram()参数,但似乎没有任何方法可以改善分辨率。我几乎没有FFT的经验。

3
改善音高检测的技巧
我正在开发一个简单的Web应用程序,该应用程序允许用户调整他/她的吉他。我是信号处理方面的真正初学者,因此,如果我的问题不合适,请不要过分判断。 因此,我设法使用FFT算法获得了基频,此时,该应用程序可以实现某种功能。但是,还有改进的余地,现在我将原始pcm发送给FFT算法,但是我在想,也许有一些前置/后置算法/过滤器可以改善检测效果。你能建议什么吗? 我的主要问题是,当检测到某个频率时,它将显示该频率1-2秒,然后跳至其他随机频率,然后再次返回,依此类推,即使声音是连续的。 我也对任何其他类型的优化感兴趣,如果有人对此有经验的话。

2
使用Goertzel算法实际上能提供更好的频率分辨率吗?
我正在阅读本文,而作者对于Goertzel算法对“频率分辨率”的广泛使用使我有些困惑。 基本问题:使用Goertzel算法实际上是否可以在特定的目标频段上为您提供更高的频率分辨率,还是仅在指定的目标频段上仅有效地计算FFT,但以采样频率除以数字指定的相同频率分辨率即可样本? 例如,假设为100 KHz(固定),数据采样数为10000(也固定)。如果我计算正常的FFT,其中FFT长度也是,那么我的频率分辨率就可以预期为,它将等于10 Hz。这意味着我的垃圾箱间隔了10 Hz,从-50,000 Hz到50,000 Hz。FsFsF_sññNññNFsñFsñ\frac{F_s}{N} 现在让我们说我想使用Geortzel算法仅查看例如20,000-21,000 Hz范围内的频率。如果我用同样的的样本数量,并使用相同的我的FFT的大小,那么什么是我的频率分辨率?还是10 Hz?还是 Hz?ññNññN21 ,000 - 20 ,00010000= 0.121,000-20,00010000=0.1\frac{21,000-20,000}{10000} = 0.1 我有一种感觉,我并没有像通过从0到50,000那样使用相同的 in来评估从21,000到20,000的频率,而是在主瓣上简单地插值,实际上并没有真正提高我的频率分辨率。ññN 这是正确的理解吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.