Questions tagged «signal-processing»

AKA数字信号处理(DSP)。信号是实体的信息承载变化属性,但是在数字意义上,“信号”是指已接收或已传输的数据流/数据块,通常代表现实世界中的数量,例如音频水平,亮度,压力等。时间或距离。“处理”是更改,分析或表征数据以检索/修改相关信号中固有信息的行为。


7
如何以正确的方式平滑曲线?
假设我们有一个数据集,大约可以由 import numpy as np x = np.linspace(0,2*np.pi,100) y = np.sin(x) + np.random.random(100) * 0.2 因此,我们有20%的数据集变异。我的第一个想法是使用scipy的UnivariateSpline函数,但是问题是这没有很好地考虑小噪声。如果考虑频率,则背景比信号小得多,因此仅花键作为截止点可能是个主意,但这会涉及来回傅立叶变换,这可能会导致不良行为。另一种方法是移动平均线,但这也需要正确选择延迟。 任何提示/书籍或链接如何解决此问题?

5
如何获得FFT中每个值的频率?
我有一个FFT结果。它们存储在两个double数组中:实部数组和虚部数组。如何确定与这些阵列中的每个元素相对应的频率? 换句话说,我想创建一个数组来存储FFT的每个实部和虚部分量的频率。


4
使用快速傅立叶变换分析音频
我正在尝试在python中创建图形频谱分析仪。 我目前正在读取16位双通道,44,100 Hz采样率音频流的1024个字节,并将两个通道的幅度平均在一起。因此,现在我有一系列256条带符号的短裤。现在,我想使用numpy之类的模块在该阵列上执行fft,并使用结果创建图形频谱分析仪,其开始时只有32条。 我已经阅读了有关快速傅立叶变换和离散傅立叶变换的维基百科文章,但是我仍然不清楚结果数组代表什么。这是我使用numpy在数组上执行fft后的数组外观: [ -3.37260500e+05 +0.00000000e+00j 7.11787022e+05 +1.70667403e+04j 4.10040193e+05 +3.28653370e+05j 9.90933073e+04 +1.60555003e+05j 2.28787050e+05 +3.24141951e+05j 2.09781047e+04 +2.31063376e+05j -2.15941453e+05 +1.63773851e+05j -7.07833051e+04 +1.52467334e+05j -1.37440802e+05 +6.28107674e+04j -7.07536614e+03 +5.55634993e+03j -4.31009964e+04 -1.74891657e+05j 1.39384348e+05 +1.95956947e+04j 1.73613033e+05 +1.16883207e+05j 1.15610357e+05 -2.62619884e+04j -2.05469722e+05 +1.71343186e+05j -1.56779748e+04 +1.51258101e+05j -2.08639913e+05 +6.07372799e+04j -2.90623668e+05 -2.79550838e+05j -1.68112214e+05 +4.47877871e+04j -1.21289916e+03 +1.18397979e+05j -1.55779104e+05 +5.06852464e+04j 1.95309737e+05 +1.93876325e+04j -2.80400414e+05 …

4
了解FFT输出
我需要一些帮助来了解DFT / FFT计算的输出。 我是一位经验丰富的软件工程师,需要解释一些智能手机加速度计的读数,例如查找主频率。不幸的是,我15年前睡过大部分大学的EE课程,但最近几天我一直在阅读DFT和FFT(显然没有用)。 请不要回答“参加EE课程”。如果我的雇主付钱给我,我实际上打算这样做。:) 所以这是我的问题: 我已经捕获到32 Hz的信号。这是我在Excel中绘制的32分的1秒示例。 然后,我从哥伦比亚大学获得了一些用Java编写的FFT代码(遵循了“ Java中可靠而快速的FFT ”一文中的建议)。 该程序的输出如下。我相信它正在运行就地FFT,因此它对输入和输出都使用相同的缓冲区。 Before: Re: [0.887 1.645 2.005 1.069 1.069 0.69 1.046 1.847 0.808 0.617 0.792 1.384 1.782 0.925 0.751 0.858 0.915 1.006 0.985 0.97 1.075 1.183 1.408 1.575 1.556 1.282 1.06 1.061 1.283 1.701 1.101 0.702 ] Im: [0.0 0.0 …

3
如何使用Scipy.signal.butter实现带通Butterworth滤波器
更新: 我发现了基于此问题的Scipy食谱!因此,对于感兴趣的任何人,请直接转到:目录»信号处理»Butterworth Bandpass 我很难实现最初看起来像是为一维numpy数组(时间序列)实现Butterworth带通滤波器的简单任务。 我必须包括的参数是sample_rate,HERTZ的截止频率以及可能的阶数(其他参数(例如衰减,固有频率等)对我来说比较晦涩,因此任何“默认”值都可以)。 我现在所拥有的就是这个,它似乎可以用作高通滤波​​器,但是我不确定自己是否做对了: def butter_highpass(interval, sampling_rate, cutoff, order=5): nyq = sampling_rate * 0.5 stopfreq = float(cutoff) cornerfreq = 0.4 * stopfreq # (?) ws = cornerfreq/nyq wp = stopfreq/nyq # for bandpass: # wp = [0.2, 0.5], ws = [0.1, 0.6] N, wn = scipy.signal.buttord(wp, ws, 3, …



13
检测波浪中的图案
我正在尝试从心电图读取图像并检测其中的每个主要波(P波,QRS复波和T波)。现在,我可以读取图像并得到一个代表(4.2; 4.4; 4.9; 4.7; ...)的矢量,代表心电图中的值,这是问题的一半。我需要一种算法,该算法可以遍历此向量并检测何时每个波开始和结束。 这是其中一个图表的示例: 如果它们始终具有相同的大小,则很容易,但是它不起作用,或者我知道心电图会产生多少波,但它也可以变化。有人有想法吗? 谢谢! 更新中 我要实现的示例: 鉴于浪潮 我可以提取向量 [0; 0; 20; 20; 20; 19; 18; 17; 17; 17; 17; 17; 16; 16; 16; 16; 16; 16; 16; 17; 17; 18; 19; 20; 21; 22; 23; 23; 23; 25; 25; 23; 22; 20; 19; 17; 16; 16; …

1
在SciPy中创建低通滤波器-了解方法和单位
我正在尝试使用python过滤嘈杂的心率信号。因为心率永远不应该超过每分钟220次跳动,所以我想过滤掉所有220 bpm以上的噪音。我将220 /分钟转换为3.66666666赫兹,然后将该赫兹转换为rad / s,以获得23.0383461 rad / sec。 采集数据的芯片的采样频率为30Hz,因此我将其转换为rad / s以获得188.495559 rad / s。 在网上查找了一些东西之后,我发现了一些我想做成低通的带通滤波器的功能。这是带通代码的链接,所以我将其转换为: from scipy.signal import butter, lfilter from scipy.signal import freqs def butter_lowpass(cutOff, fs, order=5): nyq = 0.5 * fs normalCutoff = cutOff / nyq b, a = butter(order, normalCutoff, btype='low', analog = True) return b, a …

9
快速傅立叶变换(FFT)在C#中的实现
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 3年前关闭。 改善这个问题 在哪里可以找到C#中免费,快速,可靠的FFT实现? 那可以用在产品上吗?还是有任何限制?

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.