Используйте Fixed-Point Tool для Исследования Численного Поведения

В этом примере показов, как использовать Fixed-Point Tool для сравнения с плавающей точкой и типами данных с фиксированной точкой в вашей модели. Можно использовать функциональность набора областей значений, чтобы исследовать и диагностировать численное поведение вашей модели для различных входов.

Настройте модель

В этом руководстве используется фильтр прямой формы с фиксированной точкой, реализованный с использованием фундаментальных базовых блоков, таких как Gain, Delay и Sum. Модель содержит блок Signal Generator, который подает вход квадратной волны в фильтр. В этом руководстве вы исследуете поведение фильтра для области значений входов сигнала.

  1. Чтобы открыть fxpdemo_direct_form2 пример, в MATLAB® в командной строке введите:

    fxpdemo_direct_form2

  2. Чтобы задать несколько сценариев симуляции для набора области значений, задайте Simulink.SimulationInput объект в базовое рабочее пространство или рабочее пространство модели. Задайте Simulink.SimulationInput объект, simIn, который задает амплитуду входного сигнала квадратной волны для области значений.

    simIn(1:6) = Simulink.SimulationInput('fxpdemo_direct_form2'); 
    
    simIn(1) = simIn(1).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','0.001');
    simIn(2) = simIn(2).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','0.01');
    simIn(3) = simIn(3).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','0.1');
    simIn(4) = simIn(4).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','1');
    simIn(5) = simIn(5).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','10');
    simIn(6) = simIn(6).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','100');

    Этот Fixed-Point Tool собирает области значений для каждого заданного сценария и объединяет результаты из всех симуляций запусков. Объединение позволяет вам исследовать численное поведение вашей модели в полной области значений симуляции.

  3. Чтобы задать допуски сигнала, включите регистрацию сигнала на выходе блока Sum1.

    Simulink.sdi.markSignalForStreaming('fxpdemo_direct_form2/Sum1',1,'on');

Откройте Fixed-Point Tool и Собрать Области значений

  1. На вкладке Apps fxpdemo_direct_form2 модель, выберите Fixed-Point Tool.

  2. В окне «Fixed-Point Tool» нажмите кнопку New > Range Collection.

  3. В группе System Under Design (SUD) выберите fxpdemo_direct_form2.

  4. В разделе Range Collection Mode выберите Simulation Ranges в качестве метода набора областей значений.

  5. В разделе Simulation Inputs выберите Simulink.SimulationInput объект, simIn, который вы определили в базовом рабочем пространстве.

  6. Чтобы задать допуски для системы, под Signal Tolerances задайте допуски для любого сигнала в модели с включённым логгированием сигналов.

    Установите относительную погрешность (Rel Tol) сигнала, который вы зарегистрировали, равным 15%.

  7. В группе Collect Ranges выберите Double precision.

    Когда вы собираете области значений через симуляцию, Fixed-Point Tool переопределяет типы данных в вашей модели на doubles и симулирует модель с инструментированием, чтобы собрать минимальные и максимальные значения для каждого объекта в вашей модели. Можно также принять решение переопределить типы данных с помощью синглов или масштабированных двойных чисел, или использовать текущий набор переопределений типа данных в модели.

  8. Нажмите кнопку Collect Ranges.

    Simulink® моделирует fxpdemo_direct_form2 модель шесть раз, один раз для каждой амплитуды входа квадратной волны, заданной в Simulink.SimulationInput объект. Этот Fixed-Point Tool автоматически включает инструментирование с фиксированной точкой и переопределяет типы данных в вашей модели с двойками, чтобы собрать базовую линию с плавающей точкой.

    Можно просмотреть области значений каждого моделирования по отдельности, выбрав сценарий моделирования в Workflow Browser.

    Выбор BaselineRun узел в Workflow Browser показывает объединенные области значений из шести сценариев симуляции.

  9. Нажмите Settings, затем выберите Specified data types.

  10. Нажмите Simulate with Embedded Types.

    Этот Fixed-Point Tool моделирует модель один раз для каждого сценария симуляции, используя типы данных с фиксированной точкой, заданные в модели. Выбор EmbeddedRun узел в Workflow Browser показывает объединенные результаты из шести сценариев симуляции.

    Этот Workflow Browser указывает, что только из шести сценариев симуляции EmbeddedRun_Scenario_4 соответствовали указанным допускам. Результаты с переполнениями подсвечиваются красным цветом.

Исследуйте поведение модели с фиксированной точкой

  1. Выберите вкладку Explore Fixed-Point Tool для дальнейшего исследования. В группе Numerical Issues выберите Overflow, затем нажмите Execution Order.

    В Fixed-Point Tool отображается только EmbeddedRun результаты с переполнениями и сортировка списка на основе порядка выполнения блока. В этом примере первое переполнение происходит в блоке Gain4.

    Можно дважды кликнуть по любой строке в Results электронной таблице, чтобы подсветить блок в модели.

  2. Можно сравнить поведение модели с фиксированной и плавающей точками для определенного сценария симуляции с помощью Данных моделирования Inspector. Для примера Fixed-Point Tool указывает, что EmbeddedRun_Scenario_3 не соответствует указанному допуску. Чтобы сравнить этот встроенный запуск с поведением с плавающей точкой для этого сценария симуляции, щелкните правой кнопкой мыши EmbeddedRun_Scenario_3 и выберите Open SDI для сравнения с BaselineRun_Scenario_3.

    Данные моделирования Inspector строят графики записанного сигнала, сопоставленного с выходом Sum1 блок для BaselineRun_Scenario_3 и EmbeddedRun_Scenario_3, а также их различие и допуск, заданный для этого сигнала.

См. также

| |