You can use 'skip'the FREAD function option , as well as FSEEK , to read records one column at a time:
%
recordType = {'double' 'double' 'int32' 'int8' 'char'};
recordLen = [8 8 4 1 1];
R = cell(1,numel(recordType));
%
fid = fopen('file.bin','rb');
for i=1:numel(recordType)
%
fseek(fid, sum(recordLen(1:i-1)), 'bof');
%
R{i} = fread(fid, Inf, ['*' recordType{i}], sum(recordLen)-recordLen(i));
end
fclose(fid);
, . , .