问题标签 [windowing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
642 浏览

matlab - 你能帮我理解傅里叶逆变换的工作吗?

我正在尝试了解傅里叶变换并使用 MATLAB FFT 函数我可以将我说“1 2 3”的录音转换为频域。据我了解,生成的文件包含一组复数,它们保存原始信号中频率的幅度和相位。

然后,我可以对这些复数执行傅里叶逆变换(使用 MATLAB 的 iFFT 函数),我看到(并听到)我的原始信号几乎被完美地重建了。这是我不明白的一点。如果我用高音说“3”,FFT 应该(并且确实)显示该频率存在能量,但它如何及时重建它?即,由于从 FFT 返回的所有内容都是一组幅度和相位,因此这些频率何时出现在时域信号中的信息在哪里?MATLAB 是否在做一些我不知道的窗口?

任何帮助将非常感激。

干杯,科林

0 投票
1 回答
958 浏览

sql - SQL Windowing 函数:列的出现顺序在分区中是否重要?

我试图更好地理解 SQL 中的分析函数。

  1. 我的理解是否正确,窗口函数将应用于出现在“分区依据”中的每个独特的字段组合?

  2. 如果我将我的结果集划分为几个字段,这些字段的出现顺序是否重要?

更具体地说,以下两个查询的结果在任何情况下都会有所不同吗?

p>

0 投票
2 回答
113 浏览

matlab - 选择矩阵 Matlab 的特定行(窗口函数)

我有一个列向量,我正在尝试编写一个以某种方式实现可变窗口函数的函数。这意味着我想选择一行并跳过多行(这是可变部分),但不仅要跳过,我还必须将跳过行中的一列的值设置为等于它们之前的所选行同一列的。该列是:

所以目标是用 P1 P1 P3 P3 P4 P4 创建一个新列...变量部分的意思是通过改变函数中的一个变量,可以用 P1 P1 P1 P4 P4 P4 P7 P7 P7 创建一个新列。 ..

我厌倦了这样的事情:(实现第一个案例)

我认为问题在于使用 MOD 函数或选择 f 的值。

任何帮助表示赞赏。

0 投票
4 回答
3080 浏览

sql - 如何在sql server中获取负行号

我有一组带有 a 的数据DateTime,说CalculatedOn我想要从当前日期开始并从当前日期之前getdate()获取x一定数量的记录,并从之后获取相同数量的记录。

如果x = 50然后是现在之前的 50 和现在之前的 50。我认为rownumber()这将是完美的,但是我想不出如何将先前的行数为负数,对未来的行数为正数。

还有一个问题,如果没有 50 之前或未来会发生什么,但那会发生在之后。

假设该表只有两列:

结果 :

如果今天是 25/04 12:54

然后

0 投票
1 回答
4294 浏览

python - Python:通过窗口化的高通 FIR 滤波器

我想通过在 Python 中开窗来创建一个基本的高通 FIR 滤波器。

我的代码在下面,并且是故意惯用的 - 我知道您可以(很可能)用 Python 中的一行代码完成此操作,但我正在学习。我使用了带有矩形窗口的基本 a sinc 函数:我的输出适用于加法 (f1+f2) 但不是乘法 (f1*f2) 的信号,其中 f1=25kHz 和 f2=1MHz。

我的问题是:我误解了一些基本的东西还是我的代码错了?总之,我想只提取高通信号(f2=1MHz)并过滤掉其他所有信号。我还包括了为 (f1+f2) 和 (f1*f2) 生成的屏幕截图:

在此处输入图像描述

0 投票
0 回答
262 浏览

ios - 一组音频样本上的 Hann 窗口使信号失真 - iOS 颗粒合成

我正在 iOS 中制作颗粒合成器,本质上是循环非常短的微样本,以创建新的原本不可能的声音。为此,我在 Core Audio 中设置了录制和播放功能,但是正在播放和循环播放的是来自颗粒缓冲区的短样本。

我的问题是,当我从录音中的任意点取样时,循环样本的起点和终点不一定是零交叉点。因此,这可能会导致每次重新开始样本时都会点击一次,这通常是在粒度合成中。我试图通过使用 hann 函数对样本进行窗口化来解决此问题,但是当我对此进行测试时,结果是一团糟。请注意,为了便于测试,我的颗粒缓冲区长度为 22050 个样本(1/2 秒)。

有什么想法我哪里出错了吗?windowedGrain 缓冲区是否意味着包含比grain 缓冲区更多的样本?我写错了hann函数吗?还是我没有正确应用窗口?任何可以提供的建议将不胜感激。

干杯

更新:我已经进一步测试了这个问题,设置 window = 1 会产生不失真但不加窗的声音。我也使用了一个简单的三角形窗口函数,但这也被扭曲了,见下文

更新:错误似乎是由于最终的乘法,因为 grainBufferNew 是 SInt16 而 window 是双精度。两者需要在数学上相等才能使其正常工作。由于窗口函数不能是 SInt,因此必须首先将缓冲区数据制成双精度。然后在这个总和之后,它必须转换回一个 SInt 16。

更新:我尝试将 grainBuffer 转换为双精度,但结果仍然失真,尽管结果在终端中看起来不错。

我还尝试将 grainBuffer 转换为双精度

我尝试将窗口转换为 SInt16,但结果是静音,因为窗口函数始终为零。

然后我尝试使用相等的两个整数的大小

结果似乎再次在终端中窗口化,但输出失真

0 投票
1 回答
5655 浏览

python - 使用窗口位移和带通计算 FFT

我有一个包含 1000 个传感器读数值的列表(采样率 = 10Hz):

我需要使用窗口函数(即 Kaiser 窗口)对此列表的子集进行光谱分析。

所以,我想得到一个列表,其中FFT是在该数据的多个子采样器上计算的(假设 100 个结果),位移窗口为 50 个读数(每个限制重叠 25 个读数),因此,得到 20 个结果在频域上。

然后,我想为 3 个频段(比如说 1-2Hz、2-4Hz、4-8Hz)应用带通加权函数。

最终结果应该是一个二维列表,其中第一个维度是“波段”,第二个维度表示该波段的幅度值(实部)。

谁能帮我?

编辑:好的,让我们拆分问题:

1) 给定一个列表=[1,2,3,4,5,6,7,8]。如何创建这种 2D 列表:list2D = [[1,2,3,4],[3,4,5,6],[5,6,7,8]]?这是制作位移窗口的第一个问题。

2)对于这个list2D的每个元素(第一个维度):我怎样才能与一个窗口函数一起进行FFT分析(一个FFT需要更多地“考虑”中间值)?

3)对于每个 FFT 结果,我怎样才能使带通滤波器,例如来自频谱实部的离散结果转换为频率间隔的平均值?

0 投票
1 回答
2193 浏览

python-2.7 - 如何使用 Python 获得系数带通 FIR 滤波器设计

我正在尝试用 python 制作一个 DSP,我是一个初学者,比如这个网站https://mbed.org/cookbook/FIR-Filte 1. 我用 python 寻找系数,但是如何使用 FIR 找到系数带通汉明窗,你能给我举个例子吗?2. 如何使用汉明窗口在 FIR 带通中使用 python 实现 DSP 的系数(我想用树莓派(第一个选项)或在 Arduino 上实现 DSP)

我英语不好,希望你能明白我在说什么,谢谢

0 投票
1 回答
1623 浏览

python - Python中的Fft窗口,选择和优化

我目前正在尝试计算 THD、本底噪声和其他音频测量(IMD,使用 Python 的频率响应)。为此,我将 wave 文件导入 numpy 数组,然后使用 scipy 模块计算 fft。为避免混叠,我需要在执行 fft 之前对数据进行窗口化。所以我尝试比较不同的窗口,这是一些结果(997 kHz 正弦波,32 位,192 kHz 由 adobe 试听生成):

我正在寻找精度:本底噪声应尽可能低,峰值外的响应应尽可能平坦。所以我的问题是:Rife-Vincent 真的是我最好的选择吗?我是否错过了其他我不知道且未测试的“秘密”窗口?

如果我决定保留 Rife-Vincent 窗口,问题在于时间计算!其他窗口在 scipy 模块中实现,计算速度非常快。我这样计算 Rife-Vincent 系数:

其中 M 是我的数据长度,可能很长。这非常耗时,有人可以帮我优化吗?

0 投票
1 回答
73 浏览

sql-server - 条件窗口函数

假设这个查询,

是否可以在窗口函数中定义条件?在此示例中,我需要在每一行中获取不同情况下的 SUM(数量)。一些东西(假设)像: