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

Блоки Читателя Средства записи и Двоичного файла Двоичного файла не поддерживают запись и чтение данных фиксированной точки. Как обходное решение, можно записать сохраненный целочисленный фрагмент данных 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 = fullfile(matlabroot,'examples','dsp','writeFixedData');
open_system(writeModel)
sim(writeModel)

Считайте данные фиксированной точки

Задайте читателя, чтобы считать хранимые целочисленные данные как данные int16 с 100 выборками на кадр данных.

readModel = fullfile(matlabroot,'examples','dsp','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

Смотрите также

| | |