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中有什么可以做的吗?
答案 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');