Как распаковать двоичные данные в MatLab способом Python - PullRequest
1 голос
/ 25 июня 2019

В 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 голосов
/ 26 июня 2019

Один из способов сделать это - прочитать данные, используя fread, а затем преобразовать, используя typecast. Я не знаком с форматом, который вы использовали, но скажу, что у вас есть коллекция целых чисел и чисел с плавающей точкой. Вы можете прочитать их как одну большую коллекцию байтов, а затем скрыть.

fid = fopen('file.bin', 'rb');
data = fread(fid, 32, '*uint8');
ints = typecast(data(1:8), 'int32');
floats = typecast(data(9:end), 'single');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...