Отладьте функцию MATLAB в графике

Проверяйте функции MATLAB на синтаксические ошибки

Прежде чем можно будет создать приложение симуляции для модели, необходимо зафиксировать синтаксические ошибки. Выполните эти шаги, чтобы проверять функцию MATLAB® meanstats на нарушения синтаксиса:

  1. Откройте функциональный meanstats в графике в модели call_stats_function_stateflow, что вы создали в Программе функцию MATLAB в Графике.

    Редактор автоматически проверяет ваш функциональный код на наличие ошибок и рекомендует исправления.

  2. В Редакторе Stateflow® выберите Code> C/C++ Code> Build Model.

    Если нет никаких ошибок или предупреждений, окно Builder появляется и сообщает об успехе. В противном случае это перечисляет ошибки. Например, если вы меняете имя локальной функции avg к несуществующей локальной функции aug в meanstats, ошибки появляются в Диагностическом Средстве просмотра.

  3. Диагностическое сообщение предоставляет подробную информацию типа ошибки и ссылки на код, где ошибка произошла. Диагностическое сообщение также содержит ссылку на диагностический отчет, который обеспечивает ссылки на ваши функции MATLAB и информацию о типе времени компиляции для переменных и выражений в этих функциях. Если вашей модели не удается создать, эта информация упрощает источники открытия понимания сообщений об ошибке и средств правил распространения типа. Для получения дополнительной информации об этом отчете, см. Отчеты функции MATLAB (Simulink).

  4. В диагностическом сообщении щелкните по ссылке после имени функции meanstats, чтобы отобразить незаконную строку кода.

    Незаконная строка кажется подсвеченной в редакторе.

  5. Исправьте ошибку путем возврата aug к avg и перекомпилируйте. Никакие ошибки не найдены, и компиляция завершается успешно.

Отладка на этапе выполнения для функций MATLAB в графиках

Вы используете симуляцию, чтобы протестировать ваши функции MATLAB на ошибки времени выполнения, которые не обнаруживаемы Stateflow. Когда вы моделируете свою модель, ваши функции MATLAB проходят диагностические тесты для того, чтобы избегать или неопределенной информации и возможных логических конфликтов, как описано в функциях MATLAB проверки для Синтаксических ошибок. Если никакие ошибки не найдены, симуляция вашей модели начинается.

Выполните эти шаги, чтобы моделировать и отладить функцию meanstats во время условий во время выполнения:

  1. В функциональном редакторе кликните по тире (-) символ в левом поле этой строки:

    len = length(vals);

    Маленький красный шар появляется в поле этой строки, указывая, что вы установили точку останова.

  2. Запустите симуляцию для модели.

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

  3. Чтобы усовершенствовать выполнение к следующей строке, выберите Step.

    Заметьте, что эта строка вызывает локальную функцию avg. Если вы выбираете Step здесь, выполнение совершенствует мимо выполнения локальной функции avg. Чтобы отследить выполнение строк в локальной функции avg, выберите Step In вместо этого.

  4. Чтобы усовершенствовать выполнение к первой строке вызванной локальной функции avg, выберите Step In.

    Если вы находитесь в локальной функции, можно совершенствоваться через одну строку за один раз с инструментом Step. Если локальная функция вызывает другую локальную функцию, используйте инструмент Step In, чтобы продвинуться в него. Чтобы продолжиться через остающиеся строки локальной функции и вернуться к строке после вызова локальной функции, выберите Step Out.

  5. Выберите Step, чтобы выполнить единственную строку в avg.

    Когда avg закончил свое выполнение, вы видите, что зеленая стрелка указывает вниз под его последней строкой.

  6. Выберите Step, чтобы возвратиться к функциональному meanstats.

    Выполнение переходит к строке после вызова avg.

  7. Чтобы отобразить значение переменной len, поместите указатель по тексту len в функциональном редакторе, по крайней мере, в течение секунды.

    Значение len кажется смежным с указателем.

    Можно отобразить значение для любых данных в функции MATLAB таким образом, неважно, где это появляется в функции. Например, можно отобразить значения для векторного vals путем размещения указателя по нему в качестве аргумента к функциональному length, или в качестве аргумента в функциональном заголовке.

    Можно также сообщить о значениях для данных о функции MATLAB в Окне Команды MATLAB во время симуляции. Когда вы достигаете точки останова, командная строка debug>> появляется в Окне Команды MATLAB (вам, вероятно, придется нажать Enter, чтобы видеть его). В этой подсказке можно осмотреть данные, заданные для функции путем ввода имени данных, как показано в этом примере:

    debug>> len
    len =
         4
    debug>>
    

    Как другая альтернатива отладки, можно отобразить результат выполнения функциональной строки путем исключения останавливающейся точки с запятой. Если вы делаете, результаты выполнения появляются в Окне Команды MATLAB во время симуляции.

  8. Чтобы оставить функцию, пока это не называется снова и точка останова достигнута, выберите Continue.

    В любой точке в функции можно совершенствоваться посредством выполнения остающихся строк функции с инструментом Continue. Если вы в конце функции, выбор Step делает то же самое.

  9. Кликните по точке останова, чтобы удалить его и выбрать Quit Debugging, чтобы завершить симуляцию.

    В модели вычисленные значения mean и stdev теперь появляются в блоках Отображения.

Проверяйте на нарушения области значений данных

Чтобы управлять проверкой диапазона данных, установите Simulation range checking в панели Diagnostics: Data Validity диалогового окна Model Configuration Parameters.

Задайте область значений

Чтобы задать область значений для входных и выходных данных, выполните эти шаги:

  1. В Model Explorer выберите ввод или вывод функции MATLAB интереса.

    Диалоговое окно Свойств данных открывается в панели Dialog Model Explorer.

  2. В диалоговом окне Свойств данных кликните по вкладке General и введите предельную область значений, как описано в Limit Range Properties.