-5
我有一个矩阵,其中每一行是数据点的向量,我想使用分类器预测每行的标签。我现在正在做的是在for循环中逐个读取矩阵的每一行,并在每个条目上运行分类器。因为每行的结果都独立于其他行,所以这里有平行化的余地。 MATLAB有什么功能来加速这个速度?如何在Matlab中矢量化循环?
我有一个矩阵,其中每一行是数据点的向量,我想使用分类器预测每行的标签。我现在正在做的是在for循环中逐个读取矩阵的每一行,并在每个条目上运行分类器。因为每行的结果都独立于其他行,所以这里有平行化的余地。 MATLAB有什么功能来加速这个速度?如何在Matlab中矢量化循环?
假设你自己写了分类器,这是可能的。不要将一行传递给分类器,而是传递完整的矩阵。在分类器中,你将不得不改变预测的方式。假设你使用一个数学公式来计算结果,你将不得不使用基于元素的运算符来修改它。使用,而不是逐元素运营商的一个例子的for循环:
实施例数据
a = [1,2;
3,4;
5,6]
使用一个for循环
p1= zeros(size(a,1),1);
for i=1:size(a,1)
p1(i) = a(i,1)*2 + a(i,2)^2;
end
使用矢量
p2 = a(:,1).*2 + a(:,2).^2
元 - 运营商:
http://nl.mathworks.com/help/matlab/ref/times.html?searchHighlight=element-wise
http://nl.mathworks.com/help/matlab/ref/power.html?searchHighlight=element-wise
强烈建议使用矢量来代替for循环,因为它的效率高得多。
显示...我们...一些...代码... – Jubobs 2015-02-07 14:21:25
你有没有试过阅读http://www.mathworks.com/help/matlab/matlab_prog/vectorization.html – 2015-02-07 14:22:19