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