Блоки Читателя Средства записи и Двоичного файла Двоичного файла не поддерживают запись и чтение данных фиксированной точки. Как обходное решение, можно записать сохраненный целочисленный фрагмент 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
To Workspace (Simulink) | Binary File Writer | Binary File Reader | Signal From Workspace