gpt4 book ai didi

matlab - 从文件中读取矩阵时禁止打印

转载 作者:行者123 更新时间:2023-12-02 07:37:58 25 4
gpt4 key购买 nike

我在两个文件中有两个大矩阵,A (21,000 x 80,000) 和 B(3,000 x 80,000) 我想相乘:

C = A*B_转置

目前我有以下脚本:

A = dlmread('fileA')
B = dlmread('fileB')
C = A*(B')
dlmwrite('result', C)
exit

但是,读取矩阵(前两行)需要很长时间并且 Matlab(在每次 dlmread 之后)继续打印这些矩阵。您知道如何禁用此打印并使过程更快吗?

最佳答案

要禁止打印,你只需要在每行后面放一个分号:

A = dlmread('fileA');
B = dlmread('fileB');
dlmwrite('result', A * B');

加快读取速度的一种方法是告诉 Matlab 您正在使用什么定界符,这样就不需要推断它了。例如,如果文件是制表符分隔的,您可以使用

A = dlmread('fileA','\t');

或者如果它是逗号分隔的,你可以使用:

A = dlmread('fileA',',');

除此之外,您可以考虑使用不同的文件格式。文件在哪里生成的?如果它们是由另一个 Matlab 进程生成的,那么您可以将它们保存为 Matlab 的二进制格式,使用 loadsave 访问:

A = [1 2; 3 4];
save('file.mat','A');
clear A;
load('file.mat','A');

为了进行快速基准测试,我将以下矩阵写入两个文件:

>> A = [1 2 3; 4 5 6; 7 8 9];
>> dlmwrite('test.txt',A);
>> save('test.mat','A');

然后我运行了两个基准测试:

>> tic; for i=1:1000; dlmread('test.txt',','); end; toc
Elapsed time is 0.506136 seconds.
>> tic; for i=1:1000; load('test.mat','A'); end; toc
Elapsed time is 0.260381 seconds.

这里使用load 的版本的时间是dlmread 版本的一半。您可以对适当大小的矩阵进行自己的基准测试,看看哪种最适合您。

关于matlab - 从文件中读取矩阵时禁止打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14334964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com