如何“矢量化”这个操作?

时间:2013-04-13 01:19:19

标签: matlab vectorization

我有mn x n矩阵中n矩阵的样本大小m*n的数据P矩阵称之为f

我还有一个函数,调用v,在固定向量上运行,调用它n x n1 x m矩阵并返回一个实数。

我想创建d实数向量,称之为f,在vn x n矩阵中运算Pn = 3

所以,例如,我想要m = 6d(1) = f(v,P(:,1:3)), d(2) = f(v,P(:,4:6)), . . ., d(6) = f(v,P(:,16:18))

{{1}}

如何在不进行循环的情况下执行此操作?

谢谢!

1 个答案:

答案 0 :(得分:1)

在不知道你的f函数做什么的情况下,我只能建议使用ARRAYFUN的伪矢量化解决方案:

d = arrayfun( @(x) f(v,P(:,x:x+2)), n-2:3:n*m );

它以与简单循环几乎相同的速度运行(我认为它具有更清晰的代码):

d = zeros(1,m);
for k = 1:m
    d(k) = f(v,P(:,n*k-2:n*k));
end