Валидация встраиваемой модели с плавающей точкой

Можно использовать режим переопределения типа данных, чтобы временно переключить типы данных в модели. Эта возможность позволяет вам поддерживать одну модель, но симулировать модель с помощью нескольких типов данных и подтвердить численное поведение для каждого типа. Например, если вы реализуете алгоритм с использованием типов данных с двойной точностью и хотите проверить, подходит ли алгоритм также для использования с одной точностью, можно применить переопределение типа данных к типам данных с плавающей точкой, чтобы заменить все двойки на синглы, не оказывая постоянного влияния на любые другие типы данных в вашей модели.

Применение переопределения типа данных к типам данных с плавающей точкой

Чтобы применить переопределение типа данных, необходимо задать тип данных, которые вы хотите применить, и тип данных, который вы хотите заменить.

Переопределение типа данных можно задать с помощью следующего метода. Этот пример меняет все типы данных с плавающей точкой на одинарные.

Для примера:

set_param(gcs, 'DataTypeOverride', 'Single',...
 'DataTypeOverrideAppliesTo','Floating-point');

Дополнительные сведения о настройках переопределения типа данных см. в разделе «Переопределение типа данных управления».

Валидация модели с одной точностью

Этот пример использует ex_single_validation модель, чтобы показать, как можно использовать переопределение типа данных. Это доказывает, что алгоритм, реализующий типы данных двойной точности, также подходит для встроенного использования с одной точностью.

О модели

  • Входы In2 и In3 являются входами двойной точности в блоки Sum и Product.

  • Выходы блоков Sum и Product являются входами данных в блок Multiport Switch.

  • Область входа In1 - управляющий вход блока Multiport Switch. Значение этого входа управления определяет, какой из других его входов, сумму In2 и In3 или продукт In2 и In3, переходит к порту выхода. Потому что In1 является управляющим входом, его тип данных int8.

  • Блок Relational Operator сравнивает выход блока Multiport Switch с In4, и выводит логический сигнал.

Запуск примера

Откройте модель

  1. Откройте ex_single_validation модель. В MATLAB® в командной строке введите:

    addpath(fullfile(docroot,'toolbox','simulink','examples'))
    ex_single_validation

Переопределение типов данных с плавающей точкой с помощью синглов

  1. В командной строке переопределите типы данных с плавающей точкой в модели на синглы

    set_param(gcs, 'DataTypeOverride', 'Single',...
     'DataTypeOverrideAppliesTo','Floating-point');
  2. В модели на вкладке Modeling нажмите Update Model.

    Переопределение типа данных заменяет все с плавающей точкой (double) типы данных в модели с single типы данных, но не влияют на целое число или логические типы данных.

Запуск проверки Model Advisor

  1. Из модели на вкладке Modeling нажмите Model Advisor.

  2. В диалоговом окне «Системный селектор» нажмите кнопку OK.

    Откроется Model Advisor.

  3. В Model Advisor разверните узел By Task и, под Modeling Single-Precision Systems, выберите проверку Identify questionable operations for strict single-precision design.

  4. На правой панели нажмите кнопку Run This Check.

    Проверка проходит, указывая, что этот алгоритм подходит для использования с одной точностью. Чтобы убедиться, что в сгенерированном коде не остается типов данных двойной точности, используйте Single-Precision Converter перед генерацией кода для встраиваемого использования с одной точностью. Для получения дополнительной информации смотрите Начало работы с Single Precision Converter (Fixed-Point Designer).

Блоки, которые поддерживают одинарную точность

Идентификация Simulink® блоки, поддерживающие одинарную точность, в командной строке вводят showblockdatatypetable. В модели, чтобы найти блоки, которые не поддерживают одну точность, используйте проверку Model Advisor Идентифицируйте сомнительные операции для строгого проекта с одной точностью.

См. также

|

Похожие темы