最快的方法没有for循环矩阵乘法在数组?

20视图(30天)
大家好!
我有一个三维矩阵,这是由2 x2矩阵的数组。我需要执行矩阵乘法的所有2 x2这些在这个三维结构。我现在有一个解决方案使用for循环实现,但是我想知道如果有一个优化的方法(可能会进行向量化,使用一些内置的matlab函数,利用细胞阵列,重组的方式存储数据本身,等等)。我添加了以下概念的说明,以及我现在的实现使用for循环。
可视化例子
整体矩阵维度:2 x2xn(我使用n = 5视觉和代码示例)
我在M1的矩阵乘积进行向量化,M2, M3……锰
代码示例
%第三维度的长度
n = 5;
%初始化随机矩阵
一个= randn (2, 2, n);
产品=眼(2);
%计算矩阵的乘积在第三维度
抽搐
i = 1: n
产品=产品*(:,:我);
结束
toc
谢谢你!

答案(1)

马特·J
马特·J 2021年8月6日
编辑:马特·J 2021年8月6日
(可能向量化,使用一些内置的matlab函数,利用细胞阵列
如果你的矩阵单元阵列形式开始,这的确会让他们更快的办法:
%的矩阵
n = 1 e5;
%随机矩阵数据
(::1:n) = {randn (2, 2)};
产品=眼(2);
%细胞形成
抽搐;
i = 1: n
产品= *{我};
结束
toc;
运行时间是0.033400秒。
%的矩阵形式
抽搐
= cell2mat ();
i = 1: n
产品=产品*(:,:我);
结束
toc
运行时间是0.127890秒。

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!