Mat文件载入比m文件慢

3

我有一个存储在mat文件和.m文件中的大变量。 数据只是一个大的单元格:

Tensor{1,1,1,1,1,1,1,1,1,1,1,1}=[1,1,2,2,1, (... )];

Tensor{1,1,1,1,1,1,1,1,1,1,1,2}=[1,1,2,2,3, (... )];

(...)

为什么从mat文件加载变量的速度会比从m文件加载慢这么多?
tic;load('Tensor.mat');toc
Elapsed time is 6.969654 seconds.

tic;Tensor;toc
Elapsed time is 0.152476 seconds.

有没有一种方法可以将变量保存为m文件?

@Daniel 典型条目的一个例子是:

Tensor{2,2,2,2,2,4,4,4,4,4,4,4} = [ ...
    0,0,0,0,0,(1 / 6) .* 22 .^ (-1 / 2),0,0,0,0,0,0,0 ; ...
    0,0,0,0,(1 / 6) .* ( 5 / 33) .^ (1 / 2),0,(-1 / 12) .* (7 / 11) .^ (1 / 2),0,0,0,0,0,0 ; ...
    0,0,0, (1 / 11) .* (5 / 6) .^ (1 / 2),0,(-35 / 132) .* 3 .^ (-1 / 2),0,(7 / 44) .* 3 .^ (-1 / 2),0,0,0,0,0; ...
    0,0,(1 / 11) .* (5 / 6) .^ (1 / 2),0,(-7 / 33),0,(1 / 44) .* 105 .^ (1 / 2),0,(-7 / 66),0,0,0,0; ...
    0,(1 / 6) .* (5 / 33) .^ (1 / 2),0,(-7 / 33),0,(7 / 33) .* (5 / 2) .^ (1 / 2),0,(-35 / 198) .* (5 / 2) .^ (1 / 2),0,(7 / 66),0,0,0; ...
    (1 / 6) .* 22 .^ (-1 / 2),0,(-35 / 132) .* 3 .^ (-1 / 2),0,(7 / 33) .* (5 / 2) .^ (1 / 2),0,(-25 / 66) .* (7 / 6) .^ (1 / 2),0,(35 / 198) .* (5 / 2) .^ (1 / 2),0,(-7 / 44) .* 3 .^ (-1 / 2),0,0; ...
    0,(-1 / 12) .* (7 / 11) .^ (1 / 2),0,(1 / 44) .* 105 .^ (1 / 2),0,(-25 / 66) .* (7 / 6) .^ (1 / 2),0,(25 / 66) .* (7 / 6) .^ (1 / 2),0,(-1 / 44) .* 105 .^ (1 / 2),0,(1 / 12) .* (7 / 11) .^ (1 / 2),0; ...
    0,0,(7 / 44) .* 3 .^ (-1 / 2),0,(-35 / 198) .* (5 / 2) .^ (1 / 2) ,0,(25 / 66) .* (7 / 6) .^ (1 / 2),0,(-7 / 33) .* (5 / 2) .^ (1 / 2),0,( 35 / 132) .* 3 .^ (-1 / 2),0,(-1 / 6) .* 22 .^ (-1 / 2); ...
    0,0,0,(-7 / 66), 0,(35 / 198) .* (5 / 2) .^ (1 / 2),0,(-7 / 33) .* (5 / 2) .^ (1 / 2),0,( 7 / 33),0,(-1 / 6) .* (5 / 33) .^ (1 / 2),0; ...
    0,0,0,0,(7 / 66),0,(-1 / 44) .* 105 .^ (1 / 2),0,(7 / 33),0,(-1 / 11) .* (5 / 6) .^ (1 / 2),0,0; ...
    0,0,0,0,0,(-7 / 44) .* 3 .^ (-1 / 2),0,(35 / 132) .* 3 .^ (-1 / 2),0,(-1 / 11) .* (5 / 6) .^ (1 / 2),0,0,0; ...
    0,0,0,0,0,0,(1 / 12) .* (7 / 11) .^ (1 / 2),0,(-1 / 6) .* (5 / 33) .^ (1 / 2),0,0,0,0; ...
    0,0,0,0,0,0,0,(-1 / 6) .* 22 .^ (-1 / 2),0,0,0,0,0 ...
    ] ;

标签要小心使用![tag:m]和[tag:mat]与Matlab无关,请查看它们的描述。 - Luis Mendo
1
.mat文件保存的是哪个版本?如果它们比6更近,那么它们就是压缩的,当你将它们加载到工作区时,解压缩可能需要更长的时间。请在这里查看相关信息。要检查版本,请在命令窗口中输入以下内容:type('YourMatFile.mat') - Benoit_11
你是通过网络加载文件还是本地磁盘?(同样的问题适用于“.m”文件) - matlabgui
它们都保存在本地。 - kiara
你真的需要一个12维的单元数组吗?如果所有的值都是数字,你可以使用一个简单的矩阵吗? - Hoki
显示剩余2条评论
1个回答

1
那是因为.mat文件是一个二进制文件,需要一些处理才能提取变量,而.m文件只是一个文本文件。保存数据时,使用.dat文件比.m文件更方便。结果应该差不多。可以尝试这两个命令来检查:
tic;load('Tensor.mat');toc
tic;load('Tensor.dat','-ascii');toc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接