hex2dec () ожидает ввод шестнадцатеричной числовой строки.
>> hex2dec('28')
С вашим оператором fread я подозреваю, что ваша переменная 'a' будет целым числом * 4 отсюда и сообщение об ошибке, насколько я понимаюточность уже преобразовала шестнадцатеричную строку в тип, который вы объявили.Если вы хотите передать это значение через hex2dec, вам нужно создать строковый ввод.
>> hex2dec(num2str(28));
Знаете ли вы формат вашего двоичного файла?т.е. является ли первое значение данных целым числом * 4?
РЕДАКТИРОВАТЬ: добавлен шестнадцатеричный вывод
В ответ на комментарий, когда вы читаете данные, MATLAB преобразует поток двоичных данныхв формате, который вы определили.Если вы хотите получить поток шестнадцатеричных данных, то самый простой способ - преобразовать их обратно в шестнадцатеричный.
a=dec2hex(fread(fid))
'a' будет список всех значений в шестнадцатеричном формате и должен соответствовать тому, что высм. в вашем шестнадцатеричном редакторе.