Блоки 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
Устройство чтения двоичных файлов | Устройство записи двоичных файлов | Сигнал из рабочей области | К рабочему пространству (Симулинк)