Блоки Читателя Средства записи и Двоичного файла Двоичного файла не поддерживают запись и чтение данных фиксированной точки. Как обходное решение, можно записать сохраненный целочисленный фрагмент данных 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
Читатель двоичного файла | Средство записи двоичного файла | Сигнал из рабочей области | К рабочей области