MATLAB中的矩阵乘法计算时间

时间:2014-12-25 05:49:35

标签: matlab matrix

在David Lay的线性代数中,他问两种矩阵计算方式中的哪一种更快:

  1. A*(A*x)
  2. (A*A)*x
  3. 其中An x n矩阵,xn x 1向量(矩阵产品定义明确。)

    我做了一个matlab程序,并为自己看到了更高的尺寸,我深信不疑。但我也尝试了n = 1的情况,在这种情况下,奇怪的是选项1仍然比选项2快,但事实并非如此。

    有人知道为什么n = 1的情况会更快出现吗?

    虽然稍微快一些

2 个答案:

答案 0 :(得分:1)

对于n=1情况,Ax都是标量,因此两个操作都包含两个标量乘法。操作应该花费几微秒(或更短),并且可能比计时器的分辨率更快。问题更关注n的更大(更现实)的价值。

答案 1 :(得分:0)

确定。弄清楚了。平均而言,计算时间是一样的。我的代码中出现了逻辑错误。现在,如果更快在一次运行中显示更少的时间(这本身就是整体平均值),那么在下一次运行中它比另一次运行慢。这是matlab代码:

close all
clc
clear all
n=1
for j=1:100
tic
for i=1:100
a=round(10*rand(n,n));
x=round(10*rand(n,1));
(a*a)*x;
end
d=toc;
f(j)=d*1e3;
end

for j=1:100
tic
for i=1:100
a=round(10*rand(n,n));
x=round(10*rand(n,1));
(a)*(a*x);
end
e=toc;
t(j)=e*1e3;
end


slower=mean(f)
faster=mean(t)
plot(1:100,f)
hold on
plot(1:100,t,'r')
legend('slower','faster')