问题标签 [accelerate-framework]

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 投票
3 回答
1441 浏览

macos - Numpy EIG 在 Mac OS X 10.6 上比 MATLAB EIG 慢大约 4 倍。我究竟做错了什么?

我尝试在 MATLAB 和 NumPy 上分析 EIG 函数,以比较我的 Macbook Pro(2 GHz,运行 OS X 10.6 的四核 i7)上的性能。与 MATLAB 相比,NumPy EIG 似乎相当慢。

这是我在 NumPy 上分析的代码:

在 NumPy 中,这大约是19.5 秒/执行。

这是 MATLAB 中的相同代码:

这在 MATLAB上大约是5.36 秒/执行。

我想像这样简单的事情不应该过多地依赖于 JIT 性能,所以它可能归结为 BLAS 和访问 BLAS 库的例程。我知道 MATLAB 在 Mac 上使用 Accelerate Framework。

NumPy 似乎也在我的 Macbook Pro 上使用了 Accelerate Framework BLAS;这是输出numpy.show_config()

我正在使用 Python 2.7.2 和 NumPy 1.6(都从 MacPorts 安装)

所以这是我对 NumPy 人的问题:为什么在这种情况下 NumPy 速度较慢?在安装 NumPy 时我是否遗漏了一些优化?

0 投票
2 回答
1486 浏览

coding-style - 使用 Accelerate 框架对向量进行编码

我第一次使用 Accelerate 框架,目标是在 iOS 应用程序中实现一些矢量化代码。我从来没有尝试过在 Objective C 或 C 中处理向量方面做任何事情。有一些使用 MATLAB 的经验,我想知道使用 Accelerate 是否确实更痛苦。假设我想计算以下内容:

b = 4*(sin(a/2))^2其中 a 和 b 是向量。

MATLAB代码:

但是,正如我在浏览文档后看到的那样,使用 Accelerate 的情况完全不同。

我的 C 实现:

老实说,我不知道这里最糟糕的是什么:跟踪所有中间步骤,试图记住参数是如何在 vDSP 中相对于 VecLib 传递的(完全不同),或者做一些非常琐碎的事情需要花费大量时间。

我真的希望我在这里遗漏了一些东西,并且大多数步骤可以合并或缩短。任何关于编码资源、良好编码习惯(通过艰苦的方式学习或从书本中学习)等方面的建议都将非常受欢迎!你们都是如何处理多行向量计算的?

0 投票
2 回答
517 浏览

sse2 - 通过 Accelerate 框架添加两个 __m128 类型


我需要__m128使用 Accelerate 框架添加/mul/sub 两个(浮点)变量。但是,我找不到这样做的功能。所有 Accelerate 框架函数都采用int__vector__类型而不是float__vector__类型。我找到了除法的功能'vdivf',但我也需要添加/mul/sub。

谁能告诉我,如何__m128使用 Accelerate 框架添加/mul/sub 两个(浮点)变量?像这样的东西:_mm_add_ps, _mm_sub_ps_mm_mul_ps但使用 Accelerate 框架 API。

0 投票
2 回答
5724 浏览

ios - 快速傅立叶变换结果:频率轴刻度?

我使用 Apple 的 Accelerate Framework(在 iOS 设备上执行)成功实现了获取数组数据并在其上运行快速傅立叶变换的代码。

我现在的问题是频率轴的比例是多少?结果在某些频率范围内具有预期的峰值,但我不确定频率应该是多少。Accelerate Framework 的 FFT 函数接收一个数组并输出一个具有相同(或更多)数据点数的数组。它是否假设所有这些点在时间上都是等距的?它不将采样频率或时间变量作为输入。频率轴的比例(即每个点的频率增量)是否只是采样周期除以 2*Pi(或类似的东西?)我在文档中找不到很多关于此的信息。我一直在网上寻找类似的问题,但没有找到任何东西。

这在某些方面是一个数学问题,尽管它在很大程度上取决于 Accelerate Framework 的实现。

谢谢

编辑我在这里问了一个后续问题,但还没有人回答。请看一下!

0 投票
0 回答
749 浏览

ios - 使用 Apple Accelerate 框架进行倒谱和共振峰跟踪

我一直在使用这个网页作为语音共振峰跟踪的指南......

http://iitg.vlab.co.in/?sub=59&brch=164&sim=615&cnt=1

一切似乎进展顺利,除了最后一步,即将倒谱转换为平滑表示,用于共振峰跟踪的简单峰值拾取。光谱仪看起来不错,倒谱仪(我可以这么说吗?:P)看起来也不错(据我所知),但最后阶段的结果(平滑共振峰表示)不是我所期望的。

我将每个阶段的样本作为视觉图像上传到...

http://imgur.com/a/62duS

该样本用于声音“i”的语音,如“beed”。根据这个网站...

http://home.cc.umanitoba.ca/~robh/howto.html#formants

第一个共振峰应该在 500hz 左右,第二个和第三个共振峰分别在 2200hz 和 2800 hz 左右。光谱仪显示的东西非常相似,但在最后阶段我得到的结果类似于......

F1 - 891 F2 - 1550 F3 - 2329

任何见解将不胜感激。一段时间以来,我一直在兜圈子。我的代码如下所示...

0 投票
1 回答
4174 浏览

objective-c - 二阶 IIR 滤波器,巴特沃斯带通 (EQ) 的系数?

重要更新:我已经找到答案并将它们放在这个简单的开源库中:http ://bartolsthoorn.github.com/NVDSP/看看,如果你遇到问题,它可能会为你节省相当多的时间IOS中的音频过滤器!

^

我创建了一个(实时)音频缓冲区(float *data),其中包含几个sin(theta)不同频率的波。

下面的代码显示了我是如何创建缓冲区的,我尝试做一个带通滤波器,但它只是将信号变成噪声/光点:

我的目标是为这个缓冲区制作一个 10 波段均衡器,使用vDSP_deq22,该方法的语法是: vDSP_deq22(<float *vDSP_A>, <vDSP_Stride vDSP_I>, <float *vDSP_B>, <float *vDSP_C>, <vDSP_Stride vDSP_K>, <vDSP_Length __vDSP_N>) 参见:http: //developer.apple.com/library/mac/#documentation/Accelerate/Reference/vDSPRef/Reference/ reference.html#//apple_ref/doc/c_ref/vDSP_deq22

论据:

我必须制作 10 个过滤器(10 次vDSP_deq22)。然后我为每个频段设置增益并将它们组合在一起。但是我为每个滤波器提供什么系数?我知道这vDSP_deq22是一个二阶(巴特沃斯)IIR 滤波器,但我如何将它变成带通滤波器?

现在我有三个问题:

a) 我必须对音频缓冲区进行去交错和交错吗?我知道将 stride 设置为 2 只是在通道上过滤,但我如何过滤另一个,stride 1 会将两个通道作为一个处理。

b)我是否必须在缓冲区进入vDSP_deq22方法之前对其进行转换/处理?如果是这样,我是否也必须将其恢复正常?

c) 我应该为 10 秒设置什么系数值vDSP_deq22

我已经尝试了几天,但我一直无法弄清楚这一点,请帮助我!

0 投票
3 回答
3449 浏览

objective-c - 使用 vDSP_ctoz() 和 vDSP_ztoz() 去交错和交错缓冲区?

如何将float *newAudiointofloat *channel1float* channel2interleave it back into 去交错newAudio

这两行代码会是什么样子?我不明白 ctoz/ztoz 的语法。

0 投票
1 回答
1273 浏览

c - 用于峰值 EQ 的 IIR 系数,如何将它们传递给 vDSP_deq22?

我有这 6 个用于峰值 EQ 的系数:

使用这些中间变量:

vDSP_deq22()应该通过“5个单精度输入,滤波器系数”的文档,但我有6个系数!另外,我以什么顺序将它们传递给vDSP_deq22()

更新(17/05):我建议大家使用我在 github 上发布的 DSP 类:https ://github.com/bartolsthoorn/NVDSP它可能会为您节省很多工作。

0 投票
2 回答
10057 浏览

objective-c - 使用 Accelerate Framework 的 iOS 的 FFT 音高检测?

我已经阅读了一段时间的 FFT 和音高检测,但我无法将它们拼凑在一起。

我已经发现 Accelerate 框架可能是最好的方法,我已经阅读了来自苹果的示例代码,了解如何将它用于 FFT。如果我想实时运行音高检测,FFT 的输入数据是什么?我只是从麦克风传入音频流吗?我该怎么做?

另外,在获得 FFT 输出后,如何从中获得频率?我一直在到处阅读,但找不到任何例子或解释?

谢谢你的帮助。

0 投票
1 回答
1027 浏览

ios - 加速框架 FFT vDSPztoc 拆分实数形式以拆分实数向量

我正在使用 Accelerate 框架在 iOS 中实现基于加速度计的 FFT,但我仍然有点困惑的是这部分:

最终的数组是什么样的?我对“拆分实数形式”和“拆分实数向量”之间的区别感到困惑。我可能对它的含义有所了解,但我想确定我的想法是正确的。

起始数据,一个双精度数组,表示加速度等输入数据,通过 vDSP_ctoz 被放入奇偶形式。那么结果就是这种形式(复制自 Apple 的 vDSP 指南):

在我的实现中(有效,我只是对输出感到困惑),我还调用了 vDSP_ztoc。它应该有这个调用,还是只在示例中完成,因为他们想要恢复数组以匹配原始数组(因为他们做了反向变换)?

如果你应该这样称呼它,那么 vDSP_ztoc 之后的最终形式是什么?是吗:

或者输出数组中的第一个元素是 DC,第二个是第一个 bin 的实部,第三个是第一个 bin 的虚部,等等?或者第二个元素是否像该设置中的奈奎斯特频率,使第三个和第四个元素成为第一个 bin 的实部和虚部?

有点不清楚,但我想这个问题非常简单,我所需要的只是快速确认/更正。

谢谢!