Запись и чтение данных с фиксированной точкой из двоичных файлов в Simulink

Блоки 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

См. также

| | | (Simulink)