Вот немного другой способ, который вы можете попробовать, используя TEXTSCAN , чтобы сначала прочитать все данные в виде строк:
fid = fopen(file2,'rt'); %# Open the file
str = ['%s %s %s ' repmat('0x%s ',1,24)]; %# Format string for columns
C = textscan(fid,str,'CollectOutput',1); %# Read all fields as strings
%# (removing 0x's)
fclose(fid); %# Close the file
C = C{1}; %# Remove outer cell encapsulation
dates = strcat(C(:,1),{' '},C(:,2)); %# Collect the date strings
decValues = cellfun(@hex2dec,C(:,4:end-1)); %# Convert the first 23 columns to
%# decimal values
decValues = decValues-65536.*(decValues > 32767); %# Change from unsigned to
%# signed 16 bit values
binValues = cellfun(@(n) dec2bin(hex2dec(n),8),... %# Convert the last column
C(:,end),'UniformOutput',false); %# to binary strings
Если в вашем файле N строк, вы должны закончитьс:
- массивом ячеек N * 1
dates
строк даты (которые можно преобразовать либо в порядковые номера даты , либо векторы даты ). - Массив N-by-23
decValues
, содержащий преобразованные десятичные значения.Значения были преобразованы из диапазона от 0 до 65535 (т.е. 16-разрядное целое без знака) в -32768 до 32767 (16-разрядное целое число со знаком) с использованием дополнения до двух . - NЯчейка by-1
binValues
, содержащая преобразованные двоичные значения.Каждая ячейка содержит строку символов размером 1 на 8, состоящую из нулей и единиц.