Купить Matlab  |  Mathematica  |  Mathcad  |  Maple  |  Statistica  |  Другие пакеты Поиск по сайту
Internet-класс  |  Примеры  |  Методики  |  Форум  |  Download
https://hub.exponenta.ru/


Введение в Matlab. В.Г.Потемкино
 

Индексные указатели | Предметный указатель

Глава  4. Отладка и профилирование M-файлов
Отладка программного кода - это процесс, в ходе которого могут быть выявлены ошибки двух видов:
  • синтаксические, которые связаны с неточностью записи имен М-функций или арифметических выражений. MATLAB обнаруживает большинство синтаксических ошибок, сопровождая их сообщением об ошибке с указанием номера строки соответствующего М-файла;
  • ошибки времени выполнения, которые как правило, имеют алгоритмическую природу и проявляются в том, что приводят к непредвиденным результатам.

Достаточно легко можно исправить синтаксические ошибки, которые сопровождаются сообщениями о причинах их возникновения. Ошибки времени выполнения выявить более сложно, потому что локальная рабочая область М-функции оказывается потерянной, если ошибка приводит к возврату в рабочую область системы MATLAB. Чтобы определить причину такой ошибки можно использовать один из следующих приемов:

  • реализовать вывод результатов промежуточных вычислений на дисплей, удалив в соответствующих операторах точки с запятой, которые подавляют вывод на экран промежуточных результатов;
  • добавить в М-файл команды keyboard, которые останавливают выполнение М-файла и разрешают проверить и изменить переменные рабочей области вызываемой М-функции. В этом режиме появляется специальное приглашение K>>. Возврат к выполнению функции реализуется командой return;
  • закомментировать заголовок функции и выполнить М-файл как сценарий. Это позволяет проследить результаты промежуточных вычислений в рабочей области системы;
  • использовать отладчик системы MATLAB.

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

Отладчик может функционировать как в режиме командной строки, так и в режиме графического интерфейса пользователя.

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

Для того чтобы ознакомиться с возможностями отладчика, сформируем М-файл variance.m, который вычисляет несмещенную оценку дисперсии для элементов входного вектора. Этот файл, в свою очередь, вызывает другой М-файл sqsum, который вычисляет сумму квадратов разности элементов входного вектора и их математического ожидания:

            function y = variance(x)
                    mu = sum(x)/length(x);
                    tot = sqsum(x, mu);
                      y = tot/(length(x)-1);

Сформировать файл sqsum.m точно в том виде, в каком это показано ниже, вместе с преднамерено введенной ошибкой:
            function tot = sqsum(x, mu)
                  tot = 0;
                  for i = 1:length(mu)
                       tot = tot + ((x(i)-mu).^2);
                 end

Замечание

Данный пример носит исключительно иллюстративный характер. Старайтесь, когда это возможно, избегать циклов for и везде, где это возможно, использовать векторные конструкции, чтобы повысить эффективность выполнения.

Проверим правильность работы вышеприведенных М-файлов, взяв за эталон функцию std системы MATLAB.

Сфорормируем следующий текстовый вектор:
               v = [1 2 3 4 5];
Вычислим дисперсию,используя функцию std:
               var1 = std(v).^2
               var1 = 2.5000
Теперь вычислим дисперсию, используя функцию variance:
               myvar1 = variance(v)
               myvar1 = 1
Ответ неверен. Воспользуемся отладчиком, чтобы выявить ошибки в приведенных выше М-файлах.

В начало страницы К следующему разделу

Индексные указатели | Предметный указатель

| На первую страницу | Поиск | Купить Matlab

Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter


Copyright © 1993-2024. Компания Softline. Все права защищены.

Дата последнего обновления информации на сайте: 04.03.17
Сайт начал работу 01.09.00