问题标签 [vectorization]

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 投票
1 回答
428 浏览

image-processing - 如何像vectormagic一样编写api


我想像 http://vectormagic.com一样编写 api ,我想知道你会建议我使用什么样的技术(我知道 php、html、js、..、c++)?
其他文档和建议将不胜感激。
谢谢

0 投票
5 回答
406 浏览

r - 是否可以对 R 中向量元素的顺序更新进行向量化?

是否可以像下面这样矢量化代码?

我很欣赏这是一个微不足道的例子,但它可以说明这个想法。

我经常需要编写代码,其中向量中的第 i 个值取决于第 (i-1) 个值,如果可能的话,我想在不需要for循环的情况下编写它,因为分析建议具有这种类型的函数操作是我代码中的主要瓶颈。

此操作是否可向量化,因此我不需要for()在计算中使用循环?

0 投票
1 回答
444 浏览

r - vectorize this for loop (current row is dependent on row above)

Suppose I want to create n=3 random walk paths (pathlength = 100) given a pre-generated matrix (100x3) of plus/minus ones. The first path will start at 10, the second at 20, the third at 30:

set.seed(123)
given.rand.matrix <- replicate(3,sign(rnorm(100)))
path <- matrix(NA,101,3)
path[1,] = c(10,20,30)

for (j in 2:101) {
  path[j,]<-path[j-1,]+given.rand.matrix[j-1,]
}

The end values (given the seed and rand matrix) are 14, 6, 34... which is the desired result... but...

Question: Is there a way to vectorize the for loop? The problem is that the path matrix is not yet fully populated when calculating. Thus, replacing the loop with path[2:101,]<-path[1:100,]+given.rand.matrix returns mostly NAs. I just want to know if this type of for loop is avoidable in R.

Thank you very much in advance.

0 投票
2 回答
829 浏览

matlab - 向量化对两个向量函数的调用(将矩阵视为向量数组)

我希望计算向量集之间的累积余弦距离。
一组向量的自然表示是一个矩阵......但是我如何向量化以下内容?

我当然可以写

...只要我将矩阵重铸为向量的单元格数组。有没有更好/完全数字的方式?
此外,cellfun、arrayfun 等会利用向量指令和/或多线程吗?

注意在目前的公司中可能是多余的,但对于列向量v1'*v2 == dot(v1,v2)并且在 Matlab 中明显更快。

0 投票
3 回答
21317 浏览

matlab - 使用 Matlab 将加速度计数据集成到速度和位置中

我有测试加速度计数据,需要使用 Matlab 来查找速度和位置。不过,我需要速度和位置的实际数据点,而不仅仅是曲线下的累积面积。我有我正在使用的样本数据,并且已经能够通过相当冗长和特定的矢量化编码来实现这一点,但我需要找到一种更通用的方法。我不能只使用曲线拟合然后估计面积,因为我有离散数据并且不能有任何错误。这种从本质上计算每个矩形面积的方法是最准确的方法。到目前为止,我的尝试如下:

我已经手动解决了这一切,并在纸上和 Matlab 以及上述作品上绘制了它。但是,数据集的长度会有所不同,因此从长远来看是行不通的。我尝试使用循环来解决这个问题,因为可以轻松更改索引以适应任何长度的向量,同时保持采样率,但我无法让它输出实际数据点。我需要上述的一般形式。

这是我的第 10 次尝试,所以它包括重复。VelocityL 返回与 DeltaVelocityLoop 完全相同的向量(没有对前面的区域求和,这是目标)。VelocityLL 简单地返回写成矢量加速度长度的曲线下的总面积。如果您对如何绕过这个障碍有任何想法,请告诉我。

0 投票
3 回答
6296 浏览

c - 为什么 GCC 不会自动矢量化这个循环?

我有以下 C 程序(我的实际用例的简化,它表现出相同的行为)

当我编译时

我得到输出

其中 10 是内部 for 循环的行。当我查找它为什么会这样说时,它似乎是在说指针可以别名,但它们不能在我的代码中,因为我有 __restrict 关键字。他们还建议包括 -msse 标志,但他们似乎也没有做任何事情。有什么帮助吗?

0 投票
3 回答
4143 浏览

r - 在 R 中向量化 rep 和 seq

我正在努力完成两件事。首先,如果我有一个向量1:5,我想得到一个矩阵(或两个向量),指示这些元素的唯一组合,包括两倍相同的数字,但不包括重复。

现在我可以使用矩阵来做到这一点:

但必须有一个更简单的方法。我尝试使用Vectorizeonseq但这给了我一个错误:

我想做的第二件事是,如果我有一个包含向量的列表,bar, 以获得一个向量,其中包含重复的列表元素等于该元素中的元素数。我可以这样做:

但同样必须有一个更简单的方法。我Vectorize在这里再次尝试,但同样的错误:

0 投票
5 回答
3776 浏览

c - C中的向量化三角函数?

我正在寻找计算高度并行化的三角函数(在 1024 块中),并且我想至少利用现代架构所具有的一些并行性。

当我编译一个块

GCC 不会对其进行矢量化,并说

这对我来说很有意义。但是,我想知道是否有一个库可以进行并行三角计算。

只需一个简单的 11 阶泰勒级数,GCC 就会对所有循环进行矢量化,而且我的速度是单纯 sin 循环的两倍(使用位精确的答案,或者使用 9 阶系列,只有一位关闭 1600 个值中的最后两个,以获得 > 3 倍的加速)。我敢肯定有人以前遇到过这样的问题,但是当我用谷歌搜索时,我发现没有提到任何库等。

A. 有什么东西已经存在了吗?
B. 如果没有,关于优化并行触发函数的建议?

编辑:我找到了以下名为“SLEEF”的库:http ://shibatch.sourceforge.net/,它在本文 中有所描述,并使用 SIMD 指令来计算几个基本函数。它使用 SSE 和 AVX 特定代码,但我认为将其转换为标准 C 循环并不难。

0 投票
2 回答
486 浏览

r - 是否可以优化(矢量化)这两个函数以获得更好的性能

在我第一次尝试使用 RI 时,我猜想编写了两个性能不是很好的函数,如果我能收到一些关于如何使它们更具性能(矢量化)的提示,我将不胜感激。这两个函数最后都带有“测试用例”。

第一个函数采用两个时间序列 xts 对象 x 和 y 并返回一个序列,其中包含有关 x 高于/低于 y 天数的数据。

我希望获得性能优化帮助的第二个功能如下。该函数将 xts 对象系列和表示间隔长度的 xts 对象作为参数,以计算指定时间的系列的最小值。该函数返回具有指定窗口的序列的计算最小值,用于以长度为单位的最小计算集。

提前感谢您的帮助。

亲切的问候,萨摩。

0 投票
1 回答
193 浏览

arrays - MATLAB 中的矢量化

我正在尝试创建一个大小为 121x101 的向量,以便第 i 列由V_t*e、 、V_t = 1000*10^((i-1)/20)e121 长的列组成。

显然i是从 1 到 1.01 亿不等,但是我如何将其应用于矩阵而不只在结果中产生最终值(将其应用于每一列而不重复命令)?