为什么我得到“错误使用加载无法读取文件..”当试图加载一个'。mat '文件在不同的计算机上,我如何解决它?

282次观看(过去30天)
我将我的MATLAB工作空间保存到一台计算机(例如“计算机1”)上的一个mat文件(“test.mat”),并使用云存储服务(例如“计算机2”)将其传输到另一台计算机(例如“计算机2”)。https://www.box.com/).
保存的mat文件('test.mat')在创建它的计算机上加载时没有任何问题。但是,当我尝试加载'test。mat'在MATLAB上'计算机2'使用:
负载test.mat
我收到以下错误:\n
错误使用负载
不能读文件
C: \...\ file_location \ large_mat.mat
我的问题是:
  1. 为什么我不能在计算机2上的MATLAB中加载。mat文件?这个错误的根本原因是什么?
  2. MAT文件损坏了吗?
  3. 文件中的数据能以某种方式恢复吗?

接受的答案

MathWorks支援小组
MathWorks支援小组 2020年12月30日
假设文件正确地保存在“计算机1”上,没有任何问题。你所提问题的可能答案如下:
1)为什么我不能在2号计算机的MATLAB中加载.mat文件?这个错误的根本原因是什么?
事实上,MAT文件在“计算机1”上加载良好,一种可能性是文件可能在使用云存储服务传输到“计算机2”的过程中损坏了。虽然这背后可能有很多原因,但验证这一点的一种方法是使用不同的方法将文件重新发送到“计算机2”,(比如使用USB闪存驱动器/外部硬盘驱动器/电子邮件/不同的云存储服务)。然后尝试在“计算机2”的MATLAB中加载它。我有类似的经验时,传输一个大的MAT文件使用Box (https://www.box.com/)损坏了MAT文件。
我还建议尝试使用MATLAB Drive来存储和传输MATLAB相关文件:
2) MAT文件是否损坏?
该错误表明MAT文件可能已损坏,对此几乎无能为力。MAT文件被损坏的另一个迹象是在MATLAB命令窗口/ Linux或MacOS终端/ Windows命令提示符中出现与'HDF5'相关的错误消息。
例如:
HDF5- diag:在HDF5(1.8.12)线程0中检测到错误:#000:H5Dio.c行179在H5Dread():无法读取数据主要:数据集次要:读取失败#001:H5Dio.c行547在H5D__read():无法读取数据.....
3)文件中的数据能以某种方式恢复吗?
您可以尝试恢复mat文件中个别变量的“非损坏”部分,使用'matfile'命令(//www.ru-cchi.com/help/matlab/ref/matlab.io.matfile.html).以‘test’为例。Mat '有一个不可读的变量'v'。你可以先使用'size'函数获取这个变量的大小,如下所示:
M = matfile('test.mat');尺寸(m,'v') ans = 6 100
这告诉我们变量v在test中。mat'是一个2-D数组,有6行和100列(共600个值)。然后你可以尝试读取'v'中的'非损坏'值,并将它们存储在一个新数组'vRec'中,如下所示:
vRec = 0 (6,100);try vRec(i,j) = m.v(i,j);%保存未损坏的值%如果值已损坏或不可读,则存储'NaN' disp([int2str(i))”、“int2str (j)'是不可读的。']);显示不可读元素的索引end end end
上面的代码将尝试读取'v'中的所有'非损坏'值,并将它们存储在'vRec'中。“v”中的损坏值将存储为“nan”。

更多答案(0)

类别

了解更多大文件和大数据帮助中心而且文件交换

2022世界杯八强谁会赢?


释放

R2019b

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

Baidu
map