问题标签 [time-frequency]
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.
matlab - 用于匹配 Pursuit 原子的 MATLAB Wigner 图
使用 MATLAB,我应用 Matching Pursuit 来近似信号。我的问题是我很难将所选原子的时频表示可视化。我正在尝试生成类似于下图(source)的 Wigner 图。
我查看了 Wavelet Toolbox、Signal Processing Toolbox 以及开源 Time-Frequency Toolbox,但我可能只是使用了错误的参数,因为我在信号处理方面的经验非常有限。
例子
使用这些数据,我的目标是从上面重现情节。
不幸的是,结果图都没有接近目标可视化。请注意,在示例中,我使用tfrwv
标准参数,并使用它打开的 GUI 进行调整。
非常感谢您的帮助。
更新
我想我现在已经明白,需要使用 Gabor 原子来获得形状类似于拉伸高斯的 blob。不幸的是,信号处理工具箱的预定义字典中没有 Gabor 函数。但是,这个问题帮助我实现了所需的字典,这样我得到的原子看起来与示例非常相似:
由于我的情节接近但并不完美,因此仍有两个问题悬而未决:
- 我们在第一个示例中看到的所有 blob 都可以仅由 Gabor 原子建模,还是我需要另一个函数字典?
- 如何将单个图像图组合成一个可视化?
matlab - 定义 STFT 输出频率的间隔
如您所知,STFT 有一个矩阵结果,其维度由下式给出:
例如,假设我有一个具有特征的信号,并且我想应用具有以下输入参数的 STFT 方法:
- 采样率:250,000 Hz;
- 数据长度:498900个样本;
- 窗口长度:
nftt=625
样本; - 跃点大小:125 个样本
使用这些参数,我的 STFT 将具有大小的输出:(313*3987
计算这些值的方法存在于某些网站中)
现在,我的问题是如何定义 STFT 输出的频率维度的限制?我想我应该将我的阈值计算为 STFT 输出中的索引号,如果是这样,我该怎么做?
我有频率分辨率,但是当我乘以 时nfft
,它是采样率值的一半。
python - PANDAS - 循环两个不同大小的日期时间索引以比较日期和值
寻找一种更有效的方法来循环和比较两个具有不同频率的 Series 对象中的 datetimeindex 值。
设置
想象一下两个 Pandas 系列,每个系列都有一个日期时间索引,涵盖相同的年份跨度,但每个索引的频率不同。一个有几天的频率,另一个有几个小时的频率。
我正在尝试使用它们的索引来循环遍历这些系列,以查找匹配天数,以便我可以比较每天的数据。
我现在在做什么……慢。
现在我正在使用多级 for 循环和 if 语句(见下文);与我在 Pandas 操作中习惯的时间相比,完成这些循环的时间似乎过多(每个循环 5.45 秒)。
问题
是否有更有效的方法使用 frame1 中的索引来循环 frame2 中的索引并比较给定日期每一帧中的值?最终,我想在 frame2 vals 大于 frame1 vals 的地方创建一系列值。
可重现(测试)示例
使用随机数据创建两个单独的系列,并为每个系列分配一个日期时间索引。
signal-processing - 如何对傅里叶复数值进行下采样?
免责声明:我不是信号处理专家。
我正在编写一个函数,它采用一维数组并对其执行快速傅里叶变换。以下是它的工作原理:
- 如果数组的大小不是 2 的幂,则在末尾用 0 填充,使其大小变为 2 的幂。
- 对填充数组执行 FFT 并将结果存储在数组中
x
。 - 对复数数组进行下采样
x
以匹配原始非填充数组的长度。 - 返回
x
。
我在第 3 步遇到问题。如果我省略第 3 步并对函数调用的结果执行逆 FFT,我会得到初始填充数组,这意味着函数成功执行了第 1 步和第 2 步。
我尝试通过使用线性插值进行下采样来实现步骤 3,但是当我使用 MatLab 对最终结果执行傅里叶逆变换时,我得到的结果与原始数组不等价。我需要使用的编程语言不是MatLab,我只是使用 MatLab 来验证结果的正确性。
我可以使用哪些技术来执行步骤 3,同时仍然能够在逆 FFT 后取回原始的未填充数组?
python - Python时间模块 - 不精确的添加
免责声明:不确定标题是否合适,这是我的第一篇文章,所以我正在学习如何组织这个
代码背景:
我使用 Apophysis7x 创建分形火焰(迭代图像)并在 Fractal Fr0st 中打开 .flame 文件(此文件未渲染,它只是保存要在另一个编辑器中打开的信息),我可以在其中自动化例如不断旋转的迭代从而创建动画。Fractal Fr0st 使用 python 进行此类自动化,但它们是不变的。我制作音乐并希望有一天能完成下面的代码,以根据我的歌曲的 BPM 进行轮换。在编辑与程序关联的实际 python 文件之前,我开始自己编写代码以生成滴答声序列(该代码现在并不完全重要,但在最后发布)
到目前为止有关问题的信息:
我马上就知道 Python 不是最快的语言,但我不能 100% 确定我的代码是否不够高效,无法跟上我想要输出的内容。请查看我的代码和评论,因为我试图尽可能彻底地解释发生了什么。
计时器.py:
示例 1:
随着频率变快,输出会跳过多个“滴答”/“滴答”(我只是在测试,例如,当频率为 0.01(s)且总时间为 4(s)时,总共应该有 399 个滴答声但它只达到了 5 个滴答声。我的理论是,由于它确实需要时间来完成循环(但是时间非常短),它可能会跳过一个滴答声,因为在从 . 01 到 .02 在四舍五入之前可能是一个勾号,但代码处理速度不够快。我四舍五入到最后尽可能准确,并制作了“elif”部分以防止重复(请参阅上面的代码)
输出:
请注意,有时只计算 2^x 的刻度,即: .01、.02、.04、.08、.16、.32... 而不是: .01、.02、.03、.04、 .05, .06...
我知道这不是我在代码中给出的示例,但是每当我尝试使用更近似的频率(例如 0.23 或 .01)时都是如此,但是无论精度如何,频率越大,即:4.29 它更可能准确返回“刻度”4.29、8.58、12.87 等...
示例 2
在以下示例中,您可以说它工作得非常好,因为它在刻度之间有更长的时间来处理
如果有任何代码不清楚,请告诉我,但请务必先阅读每条评论,并在需要时运行代码/修改。
一旦我之前的问题得到解决,我希望修改 Fractal Fr0st 中使用的以下代码的“if x.animate:”部分。
默认.py:
最后感谢一百万我知道这真的很长,但我真的想了解 python 发生了什么/它是如何运作的,不管我的最终目标是什么。
此外,如果任何其他方法更快/更有效,请告诉我。谢谢!!!
matlab - 插值数据失败:网格向量未定义与给定值匹配的点网格
我有一些时间/频率数据,我尝试使用interp2
Matlab 的功能对其进行插值。数据[F,T,data]
是从 Matlab 的不同 Matlab 例程获得的,如果您有兴趣,可以使用频谱图。
我可以使用surf
. 数据很好,我相信。然而,插入数据似乎是一个问题。即使使用interp2(F,T,data,F,T)
(实际上没有插值)也会给出以下错误。
这里出了什么问题?
我有我在这里使用的数据:https ://www.dropbox.com/s/zr5zpfhp6qyarzw/test.mat
android - 通过手机扬声器播放低频心跳信号
我正在制作一个听心跳的应用程序。我可以通过耳机收听过滤后的心跳信号,但不能通过移动扬声器收听,因为移动扬声器不支持这么低的频率,我尝试了频移,但它会产生更尖锐的音调。
我需要帮助才能通过移动扬声器播放我的输出信号,但没有更清晰的音调。
任何帮助表示赞赏
r - 如何在R中获得分类频率的每日时间序列
我有一个这样的数据框:
我想将此数据框转换为每日分类频率的时间序列,如下所示:
我试过做:
但正如您所见,新变量 day 的格式改变了日期的外观。您还可以看到该表没有按正确的顺序返回日期(年份不正确),因此我可以轻松地转换为时间序列。
关于如何以更简单的方式获取频率的任何想法,或者如果这是这种方式,如何以正确的日期顺序获取频率并将其放入数据框中以便轻松转换为时间序列对象?
python-3.x - 使用季节性分解()时如何计算频率(freq)
我正在尝试将季节性、趋势和残差与时间序列“XYZ.csv”(在 2 年内收集的销售数据)区分开来。
[XYZ.csv 包含 2 列 - 日期和销售额。日期已被设置为代码中的索引。]
这段代码工作正常。唯一的麻烦是要了解如何计算这个时间序列的频率?如果有任何预定义的方式可以做到这一点。提前感谢您的任何帮助/建议!