как преобразовать значения np.double или np.float64 в реальное значение - PullRequest
0 голосов
/ 17 июня 2020

У меня есть двоичный файл, состоящий из данных нескольких датчиков, которые записываются программным обеспечением Catman (HBM). Я читаю этот файл в соответствии с инструкциями, предоставленными Catman Software.

https://docs.google.com/spreadsheets/d/1dZOw9L6_ukHNYlcR-n64DuRZ702nBq6jjA169q-aCz0/edit?usp=sharing

пожалуйста, проверьте ссылку на формат записи данных. Я получаю все параметры правильно, но не данные, пожалуйста, помогите.

Actual sensor data showing in Catman software     
-0.05625    
-0.07083    
-0.07500    
-0.07396    
-0.07708    
-0.07188    
-0.06563    
-0.04896    

These are the values i got while reading same those values in double
-3.01998798238334e-13
1.68682055390325e-77
-1.07637219868070e-141
6.61923789516606e-206
-3.69718906070881e-270
-7.62423663153382e+282
4.68858598328491e+218
-2.61881942919867e+154

fid=open(file,"rb")
data = np.frombuffer(fid.read(8), dtype=np.double)

Пожалуйста, помогите мне получить реальные значения

https://in.mathworks.com/matlabcentral/fileexchange/6780-catman-file-importer?focused=54427cf8-d142-8e8a-812e-79e73b54b4fb&tab=function MATLAB LINK FO СПРАВКА

1 Ответ

0 голосов
/ 03 августа 2020

это должно прочитать первое значение данных в массив numpy для вас:

with open(file, 'rb') as f:
    file_id = int.from_bytes(f.read(2), byteorder='little')
    data_offset = int.from_bytes(f.read(4), byteorder='little')
    f.seek(data_offset, 0)
    first_data_value = np.frombuffer(f.read(8), dtype='<f8')

Вам также понадобится количество каналов и длина каждого канала из раздела информации о канале, чтобы узнать, сколько 8-байтовые блоки для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...