首页 > 编程知识 正文

matlab multiplyMATLAB Matrix Multiply Code效率

时间:2023-05-06 03:34:35 阅读:249777 作者:196

我正在使用MATLAB对一些矩阵乘法技术进行原型设计并比较效率 . 最后,我将原型代码移动到C.这是一个家庭作业,我们需要编写一个有效的矩阵乘法例程(通过了解缓存大小,位置等) .

我很好奇这两个非常相似的循环之间的效率差异:

Matrix Multiply Loop 1 - 对B - > C列的A次元素的列求和

function [C] = dgemm_naivepe( A,B,C,n )

for j=1:n

tempcol=zeros(n,1);

for k=1:n

for i=1:n

tempcol(i)=tempcol(i)+A(i+(k-1)*n)*B(k+(j-1)*n);

end

end

for k=1:n

C(k+(j-1)*n)=tempcol(k);

end

end

结束

Matrix Multiply Loop 2 - 对B列的A次元素的总和 - > C列

function [C] = dgemm_naivepe( A,B,C,n )

for j=1:n

for k=1:n

for i=1:n

C(i+(j-1)*n)=C(i+(j-1)*n)+A(i+(k-1)*n)*B(k+(j-1)*n);

end

end

end

end

经过几次不同矩阵大小的测试后,我发现 Loop 1 比 Loop 2 快 . 有人能帮助我理解为什么会这样吗?

编辑:如您所见,矩阵以列主要顺序存储为1D数组 .

Struts2的​HTML非表单标签有哪些

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。