强制dlmread返回uint8矩阵 - 可能吗?

时间:2013-01-15 17:26:40

标签: file matlab memory-management types matrix

我有一个包含非常巨大的矩阵的文件,大小在数百万x数百,我想进一步处理这个矩阵,同时节省内存。但遗憾的是,dlmread返回一个双精度矩阵。

此文件中的数字仅为0-255,因此uint8最合适。但是我已经达到我的内存限制,当我尝试将加载的矩阵转换为uint8时,Matlab开始大喊“Out of memory”错误,myMat = single(myMat);这是有道理的,因为在删除旧矩阵之前必须创建一个新的矩阵。

我能用这个做点什么吗?

1 个答案:

答案 0 :(得分:4)

您可以将数据文件转换为合适的(即无损)8位图像格式(使用外部程序),然后使用imread将其读入MATLAB。读取此文件也应该更快,因为不涉及数据转换。