Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
29
Добавлен:
13.02.2015
Размер:
2.45 Mб
Скачать

МАТЛАБ. ОСНОВЫ ПРОГРАММИРОВАНИЯ.

Программа, написанная на языке МАТЛАБа, сохраняется в файл с расширением .m (это так называемый М-файл).

Ее нельзя написать в Command Window. Ее необходимо написать в соответствующем редакторе М-файлов. Его можно открыть так: File--New--M-file.

После того как программа готова ее сохраняют (File—Save as). Причем сохранить надо обязательно именно с тем именем файла, которое не отличается (полностью по буквам совпадает) с именем функции, описанной в программе.

При написании программы ее следует оформлять как описание функции, имеющей список исходных аргументов (их значения передаются в функцию и должны быть определены до ее вызова), а также список возвращаемых переменных (их значения вычисляются при работе функции). Текст функции заканчивается словом end. Если возвращаемое значение одно, то можно написать заголовок так: function y=ext(x) где слово function является обязательным, у имя возвращаемой переменной, х имя аргумента, ext имя функции выбранное ее составителем по своему усмотрению. При сохранении в М-файл, конечно, файл будет называться так же как и функция и иметь расширение .m то есть ext.m.

Если возвращаемых значений много, то их заключают в квадратные скобки function[a,b,c]=ertVert(x,y,z) и когда необходимо вызвать функцию, например, в Command Window, то сначала определяют значения аргументов x,y,z, и уже затем вызывают функцию (без использования слова function, просто [a,b,c]=ertVert(x,y,z) и получают вывод в окне Command Window значений возвращаемых переменных).

Сначала рассмотрим ввод-вывод для программ, не снабженных индивидуальным визуальным интерфейсом. (Они уже упоминались чуть выше). Для ввода используется команда x=input(‘x = ?’) где х имя переменной, которая вводится. Для вывода используется команда disp(‘a=’) и с ней еще disp(a). Кроме того, можно не ставить точку с запятой при вычислении переменных и тогда они сразу будут появляться в Command Window. Если ввод-вывод программы не требует указания исходных аргументов и возвращаемых переменных, то скобки пишутся пустыми function[]=ertVert2()

В МАТЛАБе есть оператор УСЛОВНЫЙ то есть проверяющий истинно или нет какое-то условие. Для этого в условии должно быть указано х==у (х равно у), х<у (х меньше у), х>у (х больше у), х<=у (х меньше или равно у), х>=у (х больше или равно у), x~=y (х не равно у). Также есть логические выражения.

Х

У

Не Х

Х и У

Х или У

Х исключающее или У

0

0

1

0

0

0

0

1

1

0

1

1

1

0

0

0

1

1

1

1

0

1

1

0

Для логических выражений предусмотрены команды МАТЛАБа.

Тип выражения

Выражение

Логический оператор

Логическая операция

И

X and Y

and(X,Y)

X&Y

ИЛИ

X or Y

or(X,Y)

X|Y

Исключ. ИЛИ

X xor Y

xor(X,Y)

нет операции

НЕ

not X

not(X)

~X

В М-файлах широко используется оператор if. Он состоит из условия, варианта действий если оно выполняется, запасного варианта действий и иногда еще из условия№2 и варианта действий для него.

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

Если надо какую-то последовательность действий выполнить многократно, то используют цикл. Он бывает либо с заранее указанным числом повторов (итераций), либо повторяет до выполнения какого-то условия и тогда заканчивает.

Цикл while повторяет пока верно указанное условие.

Цикл for x=1:0.1:10 присваивает переменной х указанное начальное значение 1, и затем после каждой итерации увеличивает его на указанный шаг 0,1. Когда переменная х превысит указанное максимальное значение 10, то цикл прекратится.

Если требуется более сложная логика действий (алгоритм), то тогда есть возможность прервать работу цикла (он не будет больше повторять итерации) командой break.

Кроме того можно прервать выполнение текущего шага цикла (то есть не будут выполнены те действия которые написаны в программе ниже команды continue и до конца цикла), при этом работа цикла продолжится (то есть счетчик цикла увеличится еще раз и начнется очередная итерация).

Иногда бывает необходимо из одной функции вызвать другую.

Это несложно. Но бывает так, что имя

этой функции заранее не известно.

Тогда имя функции следует указать как

аргумент той функции, внутри которой произойдет ее вызов. В таком случае имя функции указывается как строка символов, то есть для ее вызова надо использовать специальную команду. Это команда feval.

Многие функции МАТЛАБа допускают обращение к ним с различным числом параметров. При этом в качестве аргумента в описании функции в М-файле используется имя массива varargin. Переменные размещаются в массиве. Его особенность в том, что переменные, являющиеся элементами массива, могут быть самых разных типов. Таким образом массив varargin имеет произвольное (определяемое пользователем) содержание. Количество элементов массива (его длину) определяют функцией length(varargin). Обращение к определенному (то есть известен его номер в массиве) элементу массива записывается так varargin{i} где i его номер (индекс). Пользователь при вызове М-функции (например, в Command Window) указывает, как обычно, имя функции и в скобках ее аргумент. Но не имя массива varargin, а его содержимое (то есть его элементы через запятую).

Отладка функций осуществляется с помощью пункта меню Debug.

Так, например, предусмотрены точки останова Debug—Set—Clear Break Points.

Также есть точки останова с помощью команды. В них можно задать условие, останавливающее (в случае его выполнения) работу программы. Они расположены в Debug—Set—Modify Conditional.

Пошаговое выполнение Debug—Step или Debug—Step In.

Выполнение до курсора Debug—Go Until Cursor.