单个和双矩阵同时涉及Matlab时的内存和速度问题

时间:2016-05-12 13:25:31

标签: matlab casting

如果A是n×n双矩阵,B是n×n单矩阵(n很大),我们想要计算A * B.我知道结果矩阵是单一的类型。我担心的是

1)Matlab会隐式创建一个时间单矩阵来存储A的值吗?或者,这种混合型计算是否需要更大的内存使用量?

2)这种混合型计算是否比同型计算慢?或者,这种混合型计算是否会减慢程序的速度?

我们应该尝试明确地使用同型数据进行计算吗?我相信如果我们知道Matlab是如何工作的,我们就可以更准确地预测代码的行为。这一定很有帮助。

1 个答案:

答案 0 :(得分:1)

我同意Ander的意见并继续进行时间验证任何有关优先选择(单精度或双精度)的声明。以下是对两种方法进行基准测试的示例:

   N = 1e3;
   A1 = single(rand(N,N));
   A2 = double(rand(N,N));
   B = double(rand(N,N));

现在我们可以继续计时这两种方法。我通常会多次重复相同的计算(这里我做了100次):

    tic; for ii = 1: 100 ; C1 = A1 * B; end; toc % mixed single and double
    Elapsed time is 0.600353 seconds.
    tic; for ii = 1: 100 ; C2 = A2 * B; end; toc % both doubles
    Elapsed time is 1.500283 seconds.

所以看来,当A是单精度(A1)时,速度是原来的两倍。