Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Начала прогаммирования в среде MatLab / Начала программирования в среде MatLab.pdf
Скачиваний:
253
Добавлен:
02.05.2014
Размер:
5.66 Mб
Скачать

2.4. Создание Script-файлов

103

 

 

 

2.3.4.Вопросы

1.Для чего создаются программы в среде MatLAB?

2.Чем отличаются файл-функции от Script-файлов? Какова сфера применения каждого из этих видов файлов?

3.Что понимается под понятием "функция функций"? Какие наиболее употребительные стандартные функции функций есть в MatLAB?

4.Как создать М-файл процедуры или функции?

5.Какие основные правила написания текстов М-файлов в языке MatLAB?

2.4. Создание Script-файлов

2.4.1. Основные особенности Script-файлов

Как уже было отмечено, основные особенности Script-файлов таковы:

Script-файлы являются независимо (самостоятельно) исполняемыми блоками операторов и команд;

все используемые переменные образуют так называемое рабочее пространство, которое является общим для всех исполняемых Script-файлов; из этого следует, что при выполнении нескольких Script-файлов имена переменных в них должны быть согласованы, так как одно имя означает в каждом из них один и тот же объект вычислений;

в них отсутствует заголовок, т. е. первая строка определенного вида и назначения;

обращение к ним не требует указания никаких имен переменных: все переменные формируются в результате выполнения программы либо сформированы ранее и существуют в рабочем пространстве.

Необходимо отметить, что рабочее пространство Script-файлов недоступ-

но для файлов-функций, которые используются в нем. В файлах-функциях невозможно использовать значения, которые приобретают переменные в Script-файле, обходя заголовок файл-функции (так как все переменные файл-функции являются локальными). Единственной возможностью сделать так, чтобы внутри файлфункции некоторая переменная рабочего пространства могла сохранить свое значение и имя, является специальное объявление этой переменной в Script-файле как глобальной с помощью служебного слова global. Кроме того, аналогичная запись должна содержаться и в тексте М-файла той файл-функции, которая будет использовать значение соответствующей переменной Script-файла.

Например, можно перестроить файл-функции первого и третьего примеров из предыдущего раздела, вводя коэффициенты соответствующих функций как глобальные переменные:

function y = dvob1(x)

%Вычисление функции

%y = K(1)+K(2)*x+K(3)*sin(K(4)*x+K(5)),

%где К - глобальный вектор из пяти элементов

%Применяется для определения текущих значений

%параметров движения подвижного объекта

2.4. Создание Script-файлов

104

 

 

 

global K

y = K(1)+K(2)*x+K(3)*sin(K(4)*x+K(5));

Чтобы использовать новую файл-функцию dvob1 в Script-файле, в последнем до обращения к этой функции должна быть записана строка

global K

и определен вектор-строка К из пяти элементов (заданы их значения).

Если в одной строке объявляются несколько переменных как глобальные,

они должны отделяться пробелами (не запятыми!).

2.4.2. Ввод и вывод информации в диалоговом режиме

Для обеспечения взаимодействия с пользователем в процессе выполнения М-файла в системе MatLAB используются такие команды:

disp, sprintf, input, menu, keyboard, pause.

Команда disp осуществляет вывод значений указанной переменной или указанного текста в командное окно. Обращение к ней имеет вид:

disp (<переменная или текст в апострофах>).

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

Для устранения этого недостатка используют несколько способов.

Чтобы вывести значения нескольких переменных в одну строку (например, при создании таблиц данных), нужно создать единый объект, который содержал бы все эти значения. Это можно сделать, объединив соответствующие переменные в вектор, пользуясь операцией создания вектора-строки:

x = [x1 x2 ... x].

Тогда вывод значений нескольких переменных в одну строку будет иметь

вид:

disp ([x1 x2 ... x]).

Приведем пример:

» x1=1.24; x2=-3. 45; x3=5.76; x4=-8. 07; » disp([x1 x2 x3 x4])

1. 2400 -3. 4500 5. 7600 -8. 0700.

Аналогично можно объединять несколько текстовых переменных, напри-

мер:

» x1=' psi '; x2=' fi '; x3=' teta '; x4=' w1 '; » disp([x1 x2 x3 x4])

psi fi teta w1

Гораздо сложнее объединить в одну строку текст и значение переменных, что часто бывает необходимо. Трудности возникают потому, что нельзя объединять текстовые и числовые переменные, так как они являются данными разных типов. Одним из путей преодоления этого препятствия есть перевод числового значения переменной в символьную (текстовую) форму. Это возможно, если вос-

2.4. Создание Script-файлов

105

 

 

 

пользоваться функцией num2str, которая осуществляет такое преобразование. Запись:

y = num2str(x)

превратит числовое значение переменной "х" в текстовое представление. При этом форма представления определяется установленным режимом вывода чисел на экран (Numeric Format), например:

» x = -9. 30876e-15 x = -9. 3088e-015

» y = num2str(x) y = -9. 309e-015

Если Т - текстовая переменная, или некоторый текст, а Х - числовая переменная, то вывод их в одной строке можно обеспечить обращениям

disp ([T num2str(X)]).

Рассмотрим пример: x =

-9. 3088e-015

»T = 'Значение параметра равняется ';

»disp([T x])

Значение параметра равняется

» disp([T num2str(x)])

Значение параметра равняется -9. 309e-015

Как следует из этого примера, "механическое" объединение текстовой и числовой переменных не приводит к желаемому результату.

Другим средством достижения того же результата есть использование функции sprintf. Обращение к ней имеет вид:

Y= sprintf (‘<текст1> %g <текст2>’, X).

Врезультате получается текстовая строка Y, состоящая из текста, указанного в <текст1>, и значения числовой переменной Х в соответствия с форматом %g, причем текст из фрагмента <текст2> располагается после значения переменной Х. Эту функцию можно использовать в команде disp в виде:

disp (sprintf (‘<текст> %g', X) ).

Пример:

» disp(sprintf('Параметр1 = %g ',x))

Параметр1 = -9. 30876e-015

Ввод информации с клавиатуры в диалоговом режиме можно осуществить с помощью функции input. Обращение к ней вида:

x = input(‘<приглашение>’)

приводит к следующим действиям ПК. Выполнение операторов программы прекращается. ПК переходит в режим ожидания окончания ввода информации с клавиатуры. После окончания ввода с клавиатуры (которое определяется нажатием клавиши <Enter>) введенная информация запоминается в программе под именем "х", и выполнение программы продолжается.

Удобным инструментом выбора некоторой из альтернатив будущих вычислительных действий является функция menu MatLAB, которая создает текущее окно меню пользователя. Функция menu имеет такой формат обращения:

k=menu(‘Заголовок меню','Альтернатива1','Альтернатива2',..., 'Альтернатива n').

2.4. Создание Script-файлов

106

 

 

 

Такое обращение приводит к появлению на экране меню, изображенного на рис. 2.2. Выполнение программы временно приостанавливается, и система ожидает выбора одной из кнопок меню с альтернативами. После правильного ответа исходному параметру "k" присваивается значение номера избранной альтернативы (1, 2 , …, n). В общем случае число альтернатив может быть до 32.

Теперь, в зависимости от полученного значения этого параметра, можно построить процесс разветвления вычислений, например, выбора параметра, значение которого нужно изменить.

Команда pause временно прекращает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу клавиатуры. Если после названия команды указать в скобках некоторое положительное целое число n, то задержка выполнения программы будет осуществлена на протяжении n секунд.

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

k>>.

В этом режиме пользователь может осуществить любые действия, проверить или изменить данные. При этом ему доступны все команды и процедуры системы MatLAB. Для завершения работы в этом режиме необходимо ввести команду return. Тогда система продолжит роботу программы с оператора, следующего за командой keyboard.

Рис. 2.2

Рис. 2.3

2.4.3. Организация повторения действий

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

Пусть основные операторы созданной программы расположены в Scriptфайле с именем "ScrFil_yadro. m". Тогда схема обеспечения возврата к началу выполнения этого Script-файла может быть, например, такой:

flag =0;

while flag == 0 ScrFil_yadro kon=0;

kon=input('Закончить работу-<3>, продолжить - <Enter>');