Практ_2
.docПрактикум 2. М-файлы (скрипты). Цикл for
Практикум 2. М-файлы (скрипты). Цикл for
1. Скрипты
Система MATLAB обычно работает в режиме интерпретации команд и операторов: во время работы они выводятся в командной строке, а система выполняет их немедленную обработку и выдает вычисленный результат. Однако в этом режиме нельзя без повторного набора всех операторов повторить предыдущие действия при новых значениях исходных данных; нельзя вернуться и повторить отдельные фрагменты действий или по некоторому условию перейти к другой последовательности операторов. Чтобы избежать этих проблем, часто применяемые последовательности операторов оформляют в виде программ, которые в языке MATLAB называют М-файлами.
Различают два типа М-файлов: скрипты (script) и функции (function).
Для начала рассмотрим скрипты. Скрипты довольно простой тип М-файлов. Они позволяют автоматизировать выполнение последовательности операторов, которые в ином случае должны были бы многократно вводиться из командной строки. В скрипте можно применять любые команды и функции языка MATLAB. Скрипты не имеют входных и выходных аргументов. Они оперируют данными из рабочей области и могут создавать новые данные для последующей обработки в этом файле. Хотя скрипты не возвращают выходных аргументов, но все переменные сохраняются в рабочей области, так что после выполнения скрипта они могут быть использованы для продолжения вычислений в командном окне.
Создание нового скрипта начинается с последовательности команд File New Script в строке главного меню. В результате открывается окно редактора, в котором и набивается последовательность команд, аналогично тому, как мы делали это в командном окне. Строки, набираемые в окне редактора, автоматически нумеруются. Это позволяет идентифицировать сообщения об ошибках набора, выдаваемых в командное окно. После того, как программа набрана, нужно ее запомнить. Для запоминания программы, набранной в окне редактора, нужно воспользоваться последовательностью команд File Save as, после чего набрать придуманное Вами имя файла. При этом к имени будет автоматически добавлено расширение '.m’. Для того, чтобы программа была выполнена, нужно в командном окне набрать имя файла без расширения. Имена скриптов нельзя использовать в качестве операндов арифметических выражений и в качестве аргументов функций.
Обратите внимание, что название файла скрипта должно подчинятся тем же правилам, что и названия переменных. Название может содержать только латинские буквы (прописные или строчные) и цифры. Не допускается использовать в названии пробелы или специальные символы (кроме знака подчеркивания). При этом название файла всегда должно начинаться с буквы.
При вызове скрипта MATLAB различает регистр символов в названии файла. Например, для файла с названием “Example_1.m” MATLAB будет выдавать сообщение об ошибке при вызове >> example_1 .
Также обратите внимание, что скрипт должен быть расположен в текущей папке. В противном случае, необходимо сменить текущий каталог на место расположения скрипта, либо указать путь (полный или относительный) к файлу скрипта в строке вызова.
Пример 1. Построить окружность радиуса R
Программу оформим в виде скрипта.
% Построение окружности радиуса R=radius
% Введите, например, radius=5; затем вызовите скрипт Example_1
% команды разделены паузами, нажимайте любую клавишу для продолжения работы
%зададим графическую область
axis([-6 6 -6 6]) % задание коорд осей
% делаем паузу между каждой командой, чтобы отслеживать изменения
% переводим курсор в командное окно,
% нажимаем пробел для продолжения работы программы
pause
axis equal % одинаковый масштаб по осям
pause
grid on % сетка
hold on % включили режим сохранения графиков
pause
line ([-6 6],[0 0],'Color','black'),% рисуем ось ОХ
pause
line ([0 0],[-6 6],'Color','black') % рисуем ось ОY
pause
xlabel('X'), % помечаем ось ОХ
pause
ylabel('Y') % помечаем ось ОY
pause
title('окружность x^2+y^2=R^2') % пишем название
% Уравнение окружности радиуса R: x^2+y^2=R^2
R=radius; % radius будем вводить в командном окне
x=-R:R/10000:R; % область определения для x, разбиваем ее на 10001 точек
y1=sqrt(R.^2-x.^2); % эта функция выражает часть окр над осью ОХ
y2=-sqrt(R.^2-x.^2); % эта функция выражает часть окр под осью ОУ
plot(x,y1,'.r') % часть окр над осью ОХ
plot(x,y2,'.g') % часть окр под осью ОУ
Запоминаем скрипт под именем Example_1. Набираем в командном окне
>> help Example_1
Затем вводим
>> radius=3;
>> Example_1
Нажимая Enter, смотрим, что меняется в графическом окне, после ввода каждой команды,
нажимаем Enter пока не выскочит >>
Получаем рисунок:
В данном примере были сделаны паузы (pause) между каждой командой, отвечающей за изменения в графическом окне. Это полезная команда для наблюдения за процессом.
2. Цикл for
Цикл for предназначен для выполнения заданного числа повторяющихся действий. Самое простое использование цикла for выполняется следующим образом:
for count = start:step:final
команды MatLab
end
Здесь count - переменная цикла, start – её начальное значение, final – конечное значение, step – шаг, на который увеличивается count при каждом следующем заходе в цикл. Цикл заканчивается, как только значение count становится больше final. Значения start и step (а значит, и count) не обязательно целые.
Вспомнив, что выражение start:step:final само по себе возвращает вектор, можно заключить, что в цикле
for count = vector
…
end
где vector – какой-либо вектор, переменная count принимает поочерёдно все значения элементов vector.
В Примере 1 введем цикл for ___end (добавим pause после командам plot, уменьшив число точек в массиве для x, чтобы процесс не затянулся ):
for x=-R:R/100:R; % область определения для x, разбиваем ее на 10001 точек
y1=sqrt(R.^2-x.^2); % эта функция выражает часть окр над осью ОХ
y2=-sqrt(R.^2-x.^2); % эта функция выражает часть окр под осью ОУ
plot(x,y1,'.r') % часть окр над осью ОХ
pause
plot(x,y2,'.g') % часть окр под осью ОУ
pause
end
мы увидим, как окружность строится по точкам (для ускорения процесса зажмите enter)
Иногда в процессе отладки scriptа, хочется запустить для проверки отдельный фрагмент программы. Это можно сделать следующим образом: выделить фрагмент, затем дать команду Run (Запуск) в меню Debug (Отладка) или нажать клавишу <F5>. Результат выполнения фрагмента программы появится в командном окне.
Упражнение 1. Написать программу, строящую левую и правую ветви окружности радиуса R с произвольным центром :. Программу оформить в виде скрипта. Радиус R и координаты центра окружности a и b - входные параметры. Используя написанную программу, построить окружности
1) ; 2) ; 3) ; 4) .
Рисунки сделать либо в одной системе координат, либо в одном графическом окне, разделенном на 4 подобласти.
Упражнение 2. Написать программу, строящую левую и правую ветви параболы со смещенной вершиной:. Программу оформить в виде скрипта. Координаты смещенной вершины параболы a и b - входные параметры. Используя написанную программу, построить параболы:
1) ; 2) ;3) ;4) ;5) .
Рисунки сделать либо в одной системе координат, либо в одном графическом окне, разделенном на 4 подобласти.
Упражнение 3. Написать программу, строящую левую и правую ветви параболы со смещенной вершиной:. Программу оформить в виде скрипта. Координаты смещенной вершины параболы a и b - входные параметры. Используя написанную программу, построить параболы:
1) ; 2) ;3) ;4) ;5) .
Рисунки сделать либо в одной системе координат, либо в одном графическом окне, разделенном на 4 подобласти. Обратите внимание, в данном упражнении ветви параболы обращены вниз.