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

标签 file matlab memory-management types matrix

我有一个文件包含一个非常非常大的矩阵,大小为数百万 x 数百,我想进一步处理这个矩阵,同时节省内存。但不幸的是,dlmread 返回一个 double 类型的矩阵。

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

我能用它做什么吗?

最佳答案

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

关于file - 强制 dlmread 返回 uint8 矩阵 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343303/

相关文章:

matlab - 识别所有共线线段(在 matlab 中)

cocoa - 将 iOS 应用程序移植到 mac——如何处理内存管理?

c++ - 全局变量段错误

.net - 在调用方法的同一行实例化一个类是不好的做法吗?

python - 将文本文件内容保存到 DB : "Incorrect string value: '\xEF\xBB\xBF# W. 。 .' for column ' 第 1 行的内容”

c++ - C++读取超大文件的方法

java - Files.lines 是否将所有行读入内存?

c# - 将图像作为参数从 C# 发送到 matlab 函数

c++ - 读取和写入文件 C++

c++ - 如何使用 "Matlab Data/Engine API for c++"在 C++ 中加载 .mat