问题标签 [accelerate]
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.
swift - 对数组中的 2 个连续元素求和
我有一个指向浮点数组的指针:arr = [a0, a1, a2, a3, ..., an]
。我希望结果是:result = [a0+a1, a0+a1, a2+a3, a2+a3, a4+a5, a4+a5, ...]
. 现在我用map()
函数来做:
Accelerate
如何使用框架以有效的方式做到这一点?
编辑:
我确实设法得到res = [a0+a1, a2+a3, a4+a5, ..., an+an]
:
所以现在剩下的问题是如何Accelerate
获得重复值:[a1, a2, a3, ... an] => [a1, a1, a2, a2, ..., an, an]
swift - 使用 Accelerate 的两个数组的元素最大值
给定两个浮点数组
如何,Accelerate
我可以得到一个数组,给我两个数组的最大值,即如何获得
performance - Matlab:更快地找到 ND 矩阵中每个元素的一维线性插值节点和权重
在我现在正在处理的一个问题中,我计算矩阵中的一些值,x
然后对于x
需要的每个元素,在单调递增的向量中找到下面最近元素的索引X
以及x
元素与他们两边的第一个元素。(这本质上是线性插值,没有进行实际插值。)我经常这样做,所以我真的对它尽可能快地超级感兴趣。
我写了一个函数locate
,我可以用一些示例数据调用它:
我写了两个版本的locate
. 第一个是为了说明,第二个是我加快计算速度的最佳尝试。对于如何进一步提高性能,您有什么建议或替代方法吗?
1. 博览会
2. 最佳尝试
performance - Matlab:加快“为 ND 数组中的每个元素查找()”
我有一个 ND 数组,对于数组中的每个元素,我需要找到它下面的向量中最大元素的索引。我每次都在做这个,所以我真的对它尽可能快地超级感兴趣。
我写了一个函数locate
,我用一些有代表性的示例数据调用它。(我使用arrayfun
增加timeit
运行该函数的次数来最小化随机波动。)
我的原始版本locate
如下所示:
我可以召集的最快版本如下所示:
你能想到其他更快的方法吗?
python - How to accelerate the operation including intersection and union of sets under the loops in python
a and judge have the same lenth, and both far greater than 10000. I need to do this operations with different a and judge Hundreds of times, while i find numba cannot support set(), how to accelerate this? Thanks in advance!
ios - 如何使用 Accelerate 的线性插值
我正在尝试使用 Apple 的 Accelerate 框架从数据集中线性插入新值。我已经使用这段文档来实现我的代码,但是当我尝试插入一组小于 1 的值时遇到了问题,分数。
swift - 使用 Swift 泛型调用非泛型库
我正在尝试为 Accelerate vDSP 框架中的一些向量操作编写一个通用的 Swift 包装器,但我遇到了以通用方式调用函数的问题。
我的向量结构看起来像:
问题是add
函数被重载,要么采用浮点数并返回浮点数,要么采用双精度数并返回双精度数。由于在编译时类型未知,因此出现错误No exact matches in call to static method 'add'
我发现解决这个问题的唯一方法是在调用和强制转换之前显式检查类型:
或使用约束方法
这两种情况都会导致令人不舒服的代码重复,而且如果我有两种以上的类型(例如,如果为即将到来的 Float16 类型添加了支持),我需要继续添加越来越多的案例。后一种方法似乎特别糟糕,因为方法主体是相同的。
我希望能够做类似的事情,vDSP.add<T>(a, b)
但似乎 Swift 不支持这一点。有没有其他方法可以实现这一点并避免代码重复?
ios - 使 CGPoint 符合 AccelerateMutableBuffer 以使用 vDSP
我想对存储在数组中的大量 CGPoint 实例执行一些数学运算,所以我想我会考虑使用 Accelerate 并首先将 CGPoint 与 AccelerateMutableBuffer 一致,然后扩展 Array 以使其一致。
经过一些试验和错误,我想出了以下内容,它编译没有任何错误,但是 vDSP.add(_:, _:, result:) 返回的结果不正确:变量 p 仍然是 .zero 在结尾。
我错过了什么?
非常感谢。
(您可以在 Playground 上尝试以下代码)
编辑:我已经想通了。据我所知,这是正确的解决方案。它编译没有错误,运行没有问题,并给出正确的结果。因此,除非有人看到我没有看到的问题,否则我很乐意考虑解决这个问题。
先前实现的问题在于,在创建self
( var varself = self
) 的本地可变副本并对其进行操作时,它self
本身并没有改变。
swift - vDSP Biquad 快速删除瞬态信号
我正在使用 Apple 的 Accelerate Framework、vDSP biquad 函数https://developer.apple.com/documentation/accelerate/1450838-vdsp_biquad?language=objc#parameters来模拟python 的sosfilt函数。我已经完成了所有的过滤,但请注意我有试图去除的瞬态信号。在 python 中,这是通过从sosfilt_zi https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.sosfilt_zi.html#scipy.signal.sosfilt_zi中找到初始条件并乘以第一个元素来完成的在被过滤的数据中。我跟着这个神奇的例子Matlab filtfilt() 在 Java 中的函数实现。
当我使用sosfilt_zi在 python 中打印出初始条件时,我得到每个部分的两个值(我使用的是二阶级联),所以我总共有四个值。
然而,在 iOS 的单通道双二阶函数中,他们要求(2*M)+2作为延迟。我假设初始条件与延迟有关,这是我需要更改的,以便调整我的信号并消除瞬态。
iOS 中双二阶函数的延迟参数的函数定义是“一个单精度值数组,该数组使用直接形式 1 “过去”状态数据初始化,用于双二阶的每个部分。数组的长度应为 (2 * M) + 2,其中 M 是段数。对于每个段 m,Delay[2 m:2 m+1] 表示段 m 的两个延迟输入值,Delay[2 M:2 M+1] 表示过滤器的两个延迟输出值。此函数执行后,此数组包含过滤器的最终状态数据。
如果我有 2 个部分,那么我的延迟数组应如下所示:
[0:1] - 第 0 部分的输入延迟值
[2:3] - 第 1 部分的输入延迟值
[4:5] - 输出延迟值
我最初将延迟设置为 6 个零的数组。如果sosfilt_zi的输出是延迟的两个输入部分的正确值,那么我如何找到滤波器的延迟输出值?
是否有人熟悉 vDSP 并能够去除瞬态信号,或者可以解释如何调整级联二阶部分的延迟值?调整延迟值是否正确,如何在 python 中获取这些值?
我在想我的延迟数组看起来像(使用下面第二个链接中显示的值):
[0.72095219 -0.28358224] - 第 0 节
[-0.80004591 0.80004591] - 第 1 节
但是,如果这是正确的,我不知道该输出会是什么。我会很感激任何帮助!我发现关于 iOS biquad 函数的文档或示例非常少。谢谢!
swift - 如何将浮点数组平滑插值到更大的数组中?
我坚持使用 Swift 中的插值。任何人都可以帮助我吗?
我想将浮点数组(比如[0, 0, 100, 25, 0, 0, 0, 25, 0, 0, 0]
)插入到另一个具有给定大小(例如128)的数组中。我找到了一篇文章(使用线性插值构造新数据点),展示了如何实现这些东西。
有两种方法(你可以看到下面的结果,它们是如何执行的):
vDSP_vgenp
使用和进行线性插值- 更平滑(但不是出于我的目的)插值使用
vDSP_vlint
问题是这两种技术都没有实现我的期望,如屏幕截图 3所示。如何使我的插值分布更平滑?我想看到一个立方体状的曲线。
初始情节:
线性插值:
平滑插值: