В этом примере показано, как избежать потери точности путем переопределения типов данных в модели с удвоенными масштабами.
Чтобы открыть ex_scaled_double в командной строке MATLAB ® введите:
addpath(fullfile(docroot,'toolbox','fixpoint','examples')) ex_scaled_double

В этой модели:
Тип данных Constant block Output: fixdt(1,8,4).
Блок Bitwise Operator использует AND оператор и битовая маска 0xFF для передачи входного значения на выход. Поскольку для параметра Обработать маску как задано значение Stored Integerблок выводит сохраненное целое значение S своего входа. Схема кодирования представляет собой V = Λ + B, где V - действительное значение, а Q - сохраненное целое значение.
На вкладке Приложения Simulink ® выберите Инструмент фиксированных точек.
В инструменте «Фиксированная точка» выберите «Собрать диапазоны» > «Использовать текущие параметры». Щелкните Собрать диапазоны (Collect Ranges).
Отображается блок «Отображение» 4.125 в качестве выходного значения блока Constant. Отображается блок отображения сохраненного целого числа (SI) bin 0100 0010, который является двоичным эквивалентом сохраненного целого значения. Потеря точности происходит из-за типа выходных данных, fixdt(1,8,4), не может представлять выходное значение 4.1 точно.
Переопределение типов данных в модели с удвоенными масштабами. В инструменте «Фиксированная точка» выберите «Собрать диапазоны» > «Масштабированная двойная точность». Щелкните Собрать диапазоны (Collect Ranges).
Блок отображения отображается правильно 4.1 в качестве выходного значения блока Constant. Отображается блок отображения сохраненного целого числа (SI) 65, который является двоичным эквивалентом сохраненного целого значения. Поскольку модель использует масштабированные двойные значения для переопределения типа данных fixdt(1,8,4), скомпилированный тип выходных данных изменяется на flts8_En4, который является масштабированным двойным эквивалентом fixdt(1,8,4).
Потеря точности не происходит, поскольку масштабированные двойники используют двойное значение для хранения сохраненного значения и сохранения информации о указанном типе данных и масштабировании.
Примечание
Нельзя использовать параметр переопределения типа данных двойной точности, поскольку блок Bitwise Operator не поддерживает типы данных с плавающей запятой.