如何以Python方式在MatLab中解压缩二进制数据

时间:2019-06-25 16:55:36

标签: python matlab file

Python可以读取二进制数据块,然后将其从其原始编码中解压缩为更易访问的形式。例如,在我正在使用的某些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中有什么可以做的吗?

1 个答案:

答案 0 :(得分:0)

一种方法是使用fread读取数据,然后使用typecast进行转换。我不熟悉您使用的格式,但是说您有整数和浮点数的集合。您可以将它们读为一个大字节集合,然后进行隐蔽。

fid = fopen('file.bin', 'rb');
data = fread(fid, 32, '*uint8');
ints = typecast(data(1:8), 'int32');
floats = typecast(data(9:end), 'single');