我有一个文件包含一个非常非常大的矩阵,大小为数百万 x 数百,我想进一步处理这个矩阵,同时节省内存。但不幸的是,dlmread 返回一个 double 类型的矩阵。
这个文件上的数字只有 0-255,所以 uint8 是最合适的。但是我已经达到了内存限制,当我尝试使用 myMat = single(myMat); 将加载的矩阵转换为 uint8 时,Matlab 开始大喊“内存不足”错误。这是有道理的,因为在删除旧矩阵之前必须创建一个新矩阵。
我能用它做什么吗?
最佳答案
您可以将数据文件转换为合适的(即无损)8 位图像格式(使用外部程序),然后使用 imread
将其读入 MATLAB。读取此文件也应该快得多,因为不涉及数据转换。
关于file - 强制 dlmread 返回 uint8 矩阵 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343303/