Блоки Binary File Writer и Binary File Reader не поддерживают запись и чтение данных с фиксированной точкой. В качестве обходного пути можно записать сохранённый целочисленный фрагмент fi данные, чтение данных и использование этого значения для восстановления fi данные.
Создайте fi объект для представления 100 подписанных случайных чисел с размером слова 14 и длиной дроби 12.
data = randn(100,1); fiDataWriter = fi(data,1,14,12); storeIntData = storedInteger(fiDataWriter);
Запишите сохранённый целочисленный фрагмент fi объект файлу данных myFile.dat. Встроенный тип данных int16, который можно вычислить с помощью class(storeIntData).
writeModel = 'writeFixedData';
open_system(writeModel)
sim(writeModel)

Укажите считыватель, чтобы считать сохраненные целочисленные данные следующим int16 данные со 100 выборками на систему координат данных.
readModel = 'readFixedData';
open_system(readModel)
sim(readModel)

Действительное значение числа с фиксированной точкой может быть представлено с помощью 2^[-fractionLength*storedInteger]. Если вы знаете сигнальность, размер слова и длину дроби данных с фиксированной точкой, можно восстановить fi данные с использованием fi(realValue,signedness,wordLength,fractionLength). В этом примере данные подписываются размером слова 14 и длиной дроби 12.
fractionLength = 12; wordLength = 14; realValue = 2^(-fractionLength)*double(dataRead); fiDataReader = fi(realValue,1,wordLength,fractionLength);
Проверьте, что данные средства записи совпадают с данными устройства чтения.
isequal(fiDataWriter,fiDataReader)
ans = logical 1
Binary File Reader | Binary File Writer | Signal From Workspace | To Workspace (Simulink)