Отладка программного кода - это
процесс, в ходе которого могут быть выявлены
ошибки двух видов:
- синтаксические, которые связаны с неточностью
записи имен М-функций или арифметических
выражений. 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
Ответ неверен. Воспользуемся отладчиком, чтобы
выявить ошибки в приведенных выше М-файлах.
|