exponenta event banner

Запись и чтение данных с фиксированной точкой из двоичных файлов в 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

См. также

| | | (Симулинк)