问题标签 [signal-processing]
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.
c# - 寻找 C# 音频分析库
我正在做一个软件项目,我们的团队需要录制火车喇叭的声音。我们已经购买了录音机;它保存为 .wav 文件。我们现在需要从文件中提取数据,如频率和幅度,以创建频谱分析和分贝水平图。有针对这种类型的 C# 库吗?
windows - 如何在 Windows 平台上实现吉他放大器或 FX 仿真?
我应该选择哪种技术?我应该写一个驱动程序还是什么?非常感谢
java - 如何将 .WAV 音频数据样本转换为双精度类型?
我正在开发一个处理音频数据的应用程序。我正在使用 java(我添加了 MP3SPI、Jlayer 和 Tritonus)。我将音频数据从 .wav 文件提取到字节数组。我正在使用的音频数据样本是 16 位立体声。
根据我读过的一个样本的格式是:
AABBCCDD
其中 AABB 表示左通道和 CCDD 右通道(每个通道 2 个字节)。我需要将此示例转换为双值类型。我已经阅读了有关数据格式的信息。Java 使用大端,.wav 文件使用小端。我有点困惑。你能帮我完成转换过程吗?谢谢大家
algorithm - 快速平均平方差函数
我想知道是否有人知道一种快速(即 O(N log(N)) )计算周期信号的平均平方差函数(ASDF)或平均幅度差函数(AMDF)的方法,或者它甚至是可能的.
我知道可以使用 FFT 来计算周期性互相关。例如,在 Matlab 代码中,
相当于快得多
是否有类似的“快速”算法
或者
?
math - 在不同时间采样的指数移动平均线
我有一个连续值,我想计算一个指数移动平均线。通常我会为此使用标准公式:
- S n = αY + (1-α)S n-1
其中 S n是新的平均值,α 是 alpha,Y 是样本,S n-1是之前的平均值。
不幸的是,由于各种问题,我没有一致的采样时间。我可能知道我最多可以采样一次,例如每毫秒一次,但由于我无法控制的因素,我可能无法一次采样几毫秒。然而,一个可能更常见的情况是,我稍微早一点或晚一点地进行简单采样:而不是在 0、1 和 2 毫秒进行采样。我在 0、0.9 和 2.1 ms 采样。我确实预计,无论延迟如何,我的采样频率都会远远高于奈奎斯特极限,因此我不必担心混叠。
我认为我可以根据自上次采样以来的时间长度,通过适当地改变 alpha 以或多或少合理的方式处理这个问题。
我认为这会起作用的部分原因是 EMA 在前一个数据点和当前数据点之间“线性插值”。如果我们考虑以间隔 t 计算以下样本列表的 EMA:[0,1,2,3,4]。如果我们使用区间 2t,我们应该得到相同的结果,其中输入变为 [0,2,4],对吧?如果 EMA 假设,在 t 2时,该值自 t 0以来一直为 2 ,那将与在 [0,2,2,4,4] 上计算的间隔 t 计算相同,但它没有这样做。或者这完全有意义吗?
有人可以告诉我如何适当地改变 alpha 吗?“请展示你的作品。” 即,向我展示证明您的方法确实在做正确的事情的数学。
c++ - 如何使用 DSP 加速 OMAP 上的代码?
我正在为 OMAP3430 开发视频编解码器。我已经有用 C++ 编写的代码,我尝试修改/移植其中的某些部分以利用 DSP(我有一个额外的 DSP 的 SDK(OMAP ZOOM3430 SDK))。
我尝试移植一个小的 for 循环,它在非常少量的数据(~250 字节)上运行,但在不同的数据上运行大约 2M 次。但是 CPU 和 DSP 之间通信的过载远远超过增益(如果我有的话)。
我认为这项任务很像优化普通计算机中 GPU 的代码。我的问题是移植什么样的零件会有好处?GPU 程序员如何处理这些任务?
编辑:
- GPP 应用程序分配大小为 0x1000 字节的缓冲区。
- GPP 应用程序调用 DSPProcessor_ReserveMemory 为每个分配的缓冲区保留一个 DSP 虚拟地址空间,使用比分配的缓冲区大 4K 的大小来考虑自动页面对齐。总预留大小还必须沿 4K 页面边界对齐。
- GPP 应用程序调用 DSPProcessor_Map 将每个分配的缓冲区映射到上一步中保留的 DSP 虚拟地址空间。
- GPP 应用程序准备一个消息来通知 DSP 执行阶段虚拟地址空间的基地址,这些基地址已映射到 GPP 上分配的缓冲区。GPP 应用程序使用 DSPNode_PutMessage 将消息发送到 DSP。
- GPP 调用 memcpy 将要处理的数据复制到共享内存中。
- GPP 应用程序调用 DSPProcessor_FlushMemory 以确保数据缓存已被刷新。
- GPP 应用程序准备一个消息来通知 DSP 执行阶段它已完成对缓冲区的写入并且 DSP 现在可以访问缓冲区。该消息还包含写入缓冲区的数据量,以便 DSP 知道要复制多少数据。GPP 使用 DSPNode_PutMessage 将消息发送到 DSP,然后调用 DSPNode_GetMessage 等待从 DSP 收到消息。
在这些之后,DSP程序开始执行,当DSP完成处理时,DSP用消息通知GPP。只是为了尝试,我没有在 DSP 程序中进行任何处理。我只是将“处理完成”消息发送回 GPP。而这仍然会消耗大量时间。这可能是因为内部/外部内存使用,还是仅仅是因为通信过载?
java - 数字滤波器,Java 中的数学,
我需要您的帮助,感谢您阅读我的问题!我目前正在编写一个使用 Direket Form 2 转置过滤器的 java 程序。我知道 Matlab 中的函数过滤器可以做到这一点,但我必须使用 Java。那么有谁知道你要实现这个 Direkt Form 2 Transposed ,这个数学函数:
y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)* y(n-1) - ... - a(na+1)*y(n-na)
使用任何编程语言?所需要的只是希望指向 wrigth 方向,所以我可以弄清楚!也许有一个 C Lib 实现了一些 matlab 函数,只是任何东西。
所以谢谢你的时间
你的 Elektro
跟进:
我尝试了几天来了解您的功能,但我做不到。
这是来自 Matlab 的函数:过滤器
我所知道的是我在matlab中使用这样的函数:
newArray = filter(1,LPC_Faktor,OldArray)
我所要做的就是实现过滤器功能。
那你能再帮忙吗?
谢谢
电子
.net - .NET 的 AWGN 生成器
我正在寻找.NET 的加性高斯白噪声生成器。
我知道 .NET 和 MATLAB 之间存在某种程度的互操作性,它有一个 AWGN 生成器,但我不知道它是否是免费的EDIT,我刚刚找到它。
可能与 MATLAB 具有相似功能的 GNU Octave 等其他应用程序具有 .NET 绑定。我没有对这件事进行广泛的搜索。
我宁愿使用具有此功能的 .NET 库。从我认识的人那里:
Math.NET Neodym似乎没有。
AForge.NET有一个高斯数生成器,但我对 AWGN 缺乏了解,不知道这个生成器是否可以用于此目的。有任何想法吗?
python - Python中基于FFT的二维卷积和相关性
scipy(或其他流行的库)中是否有基于 FFT 的 2D 互相关或卷积函数?
有这样的功能:
scipy.signal.correlate2d
- “直接方法实现的convolveND
大数据会很慢”scipy.ndimage.correlate
- “使用精确计算(即非 FFT)将数组与给定内核相关联。”scipy.fftpack.convolve.convolve
,我不太明白,但似乎是错误的
numarray 有一个带switch的correlate2d()
函数fft=True
,但我猜 numarray 被折叠成 numpy,我找不到这个函数是否包含在内。
audio - 好的音频混响源?
音频混响(除了 Freeverb)是否有任何好的 C 或 C 类源代码。听起来很棒的低通滤波器的例子数不胜数,但要找到听起来不错的混响源却非常困难。
这是为什么?保留良好的实现而不发布是否是一个足够困难的问题?