小代码段的向量化

英文翻译:
q=
 2
 4
 6
 1
 6
 8

From=
 1
 4
 2

To=
 3
 6
 3

q是一个点序列。例如,q(From(1):To(1))给出2,4,6我想对这个例子进行矢量化处理。

这是非矢量化的工作代码:

J=3;
L=cell(J,1);
for j=1:J
    L{j}=q(From(j):To(j));
end

其结果是:

L=
 2,4,6   % j=1
 1,6,8   % j=2
 4,6     % j=3

我无法弄清楚如何获得此代码的矢量化形式。我试图转换L为2维数组,但无论如何都行不通。

米科拉

您可以for通过arrayfun在输入的所有元素上应用特定功能来摆脱循环但是,我不确定它是否会比循环版本快得多。

以下代码产生的输出与原始单元格数组等效L

L2 = arrayfun(@(x,y)q(x:y), From, To, 'UniformOutput', false);

在这里,@(x,y)q(x:y)定义了一个匿名函数,该函数q根据输入x返回子向量,从输入向量y中选择子arrayfun向量FromTo


如注释中所建议,如果需要额外的通用性,可以指定另一个函数句柄,如下所示:

L_fun = @(q)arrayfun(@(x,y)q(x:y), From, To, 'uniformoutput', false);

...然后将其称为任意向量(不一定是您的原始q),如下所示:

q2 = rand(10,1); %// Random vector for testing
Lout = L_fun(q2); %// Use From and To to pick from q2

甚至定义一个接受所有输入的句柄:

L_fun = @(q,From,To)arrayfun(@(x,y)q(x:y), From, To, 'uniformoutput', false);

但是在这种情况下,最好已经实际编写了一个命名函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

GPU上的向量化代码

来自分类Dev

如何向量化此代码?

来自分类Dev

在MATLAB中向量化代码

来自分类Dev

有没有一种方法可以在matlab / octave中向量化此代码段?

来自分类Dev

向量化倍频程/ matlab代码

来自分类Dev

如何向量化以下python代码?

来自分类Dev

如何“向量化”此重复的C ++代码?

来自分类Dev

在 Matlab 中使用 xor 向量化代码

来自分类Dev

如何使用 mvnpdf 向量化 Matlab 代码?

来自分类Dev

生成小的HTML代码段的辅助方法

来自分类Dev

我可以向量化此python代码吗?

来自分类Dev

为什么gcc无法向量化此直线代码?

来自分类Dev

有什么办法可以向量化这个Matlab代码吗?

来自分类Dev

将向量化的Matlab代码传输到python,numpy

来自分类Dev

我可以向量化此Python代码吗?

来自分类Dev

为什么numpy向量化不能提高我的代码速度

来自分类Dev

我如何向量化以下python代码(图像过渡)?

来自分类Dev

如何在R中向量化此代码

来自分类Dev

如何以向量化形式编写此numpy代码?

来自分类Dev

有什么办法可以向量化这个Matlab代码吗?

来自分类Dev

向量化代码-如何减少MATLAB计算时间

来自分类Dev

如何使用for循环在r中向量化我的代码?

来自分类Dev

C ++向量化向量

来自分类Dev

向量化代码以从坐标向量创建由坐标窗口组成的 3 维数组

来自分类Dev

向量化R代码,该代码已经使用了序列符号

来自分类Dev

向量化数组的函数

来自分类Dev

向量化-Matlab

来自分类Dev

向量化numpy分配

来自分类Dev

如何向量化?