0

我有按矩阵调用它的矩阵样本大小m的数据。n x nnm*nP

我还有一个函数 call if f,它对一个固定的向量进行操作,调用 itvn x n矩阵并返回一个实数。

我想通过对中的每个矩阵进行操作来创建一个1 x m实数向量,称之为。dfvn x nP

所以,举例来说,n = 3m = 6想要:

d(1) = f(v,P(:,1:3)), d(2) = f(v,P(:,4:6)), . . ., d(6) = f(v,P(:,16:18))

我怎样才能做到这一点而不做一个循环?

谢谢!

4

1 回答 1

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
于 2013-04-13T02:07:48.617 回答