archevalier 发表于 2013-11-1 00:42

使用矢量化矩阵代替for循环

最近看了一些关于matlab高效编程的资料,感觉用矢量化代替for循环这个思路很好,稍微研究了一下。
现在遇到了一个问题,不知如何解决,来与大家讨论一下。

有两个矩阵A和B,都是三阶矩阵。
a = rand(10,10,10000);
b = rand(10,10,10000);
for ii = 1:size(a,3);
   x(:,:,ii) = a(:,:,ii) * b(:,:,ii);
   xx(:,:,ii) = inv(a(:,:,ii));
end

如何使用矢量化的方法实现上述矩阵运算,谢谢各位了。

rocwoods 发表于 2013-11-1 09:51

可以参考下这个帖子:http://www.ilovematlab.cn/thread-258287-1-1.html

牛小贱 发表于 2013-12-10 10:25

{:{39}:}使用矢量化矩阵代替for循环 ,是个不错的思路啊 学习学习!!

archevalier 发表于 2013-12-13 11:05

这个也不是万能的,有些时候和直接用for循环效率差不多

mayaview 发表于 2013-12-13 17:46

archevalier 发表于 2013-12-13 11:05 static/image/common/back.gif
这个也不是万能的,有些时候和直接用for循环效率差不多

呃,貌似很少会差不多。

archevalier 发表于 2013-12-14 13:34

比如在循环内,存在矩阵求逆,就很不好处理

牛小贱 发表于 2013-12-16 10:27

给大家个链接,关于‘matlab for循环速度的提高方法’http://emuch.net/html/201205/4426082.html。大家可以参考一下!!希望大家有用{:{26}:}
页: [1]
查看完整版本: 使用矢量化矩阵代替for循环