Python 有一种方法可以读取二进制数据 block ,然后将它们从原始编码解压为更易于访问的形式。例如,在我正在使用的一些 Python 代码中,我使用以下代码来完成此操作:
with open(filename, "rb") as binary_file:
# Read many records at once
data = binary_file.read(number_of_records*record_size)
fmt = "8B Q Q 2L 2L 2L 4H 4H 3H2B"
self.data_array = np.asarray(list(struct.iter_unpack("< " + fmt, data)))
我想知道如何在 Matlab 中以同样有效的方式执行此操作,而无需单独读取每个变量。
Matlab中有什么东西可以做到这一点吗?
最佳答案
实现此目的的一种方法是使用 fread
读取数据,然后使用 typecast
进行转换。我不熟悉您使用的格式,但假设您有整数和 float 的集合。您可以将它们作为一大字节集合来读取,然后进行隐藏。
fid = fopen('file.bin', 'rb');
data = fread(fid, 32, '*uint8');
ints = typecast(data(1:8), 'int32');
floats = typecast(data(9:end), 'single');
关于python - 如何在 MatLab 中以 Python 方式解压二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56758772/