我有m
个n x n
矩阵中n
矩阵的样本大小m*n
的数据P
矩阵称之为f
。
我还有一个函数,调用v
,在固定向量上运行,调用它n x n
和1 x m
矩阵并返回一个实数。
我想创建d
实数向量,称之为f
,在v
和n x n
矩阵中运算P
在n = 3
。
所以,例如,我想要m = 6
和d(1) = f(v,P(:,1:3)), d(2) = f(v,P(:,4:6)), . . ., d(6) = f(v,P(:,16:18))
:
{{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