
- •Раздел 1 Основные понятия среды matlab
- •1. Начало работы в среде matlab
- •1.1. Характеристика среды matlab
- •1.2. Общие положения и правила работы в среде matlab
- •1.3. Работа в командном окне
- •1.4. Правила и особенности ввода математических выражений
- •1.5. Сохранение содержимого рабочего окна
- •2 Системные переменные и типы данных
- •2.1 Системные переменные
- •2.2. Типы данных. Описание основных типов
- •2.3. Комплексные числа
- •2.4. Символьные переменные
- •2.5. Массивы
- •2.5.1 Задание массивов
- •2.5.2 Доступ к элементам массивов
- •2.5.3 Функции обработки массивов
- •2.6 Тип данных структура (struct)
- •2.6.1 Задание структур
- •2.6.2 Функции обработки структур
- •2.7 Тип данных ячейка (сell)
- •2.8 Функции определения типов
- •2.9 Функции для работы со значениями даты и времени
- •2.10 Функции преобразования типов
- •3. Основные операции и математические функции matlab
- •3.1 Основные арифметические операции
- •3.2 Основные элементарные функции
- •Help имя_функции,
- •3.3 Операции отношения и логические операции
- •4 Операторы среды matlab
- •4.1 Условный оператор if
- •4.2 Условный оператор switch
- •4.3 Реализация циклических процессов
- •4.3.1 Оператор цикла while
- •4.3.2 Оператор цикла for
- •Pause – останавливает выполнение программы до момента нажатия любой клавиши на клавиатуре; pause(n) – останавливает выполнение программы на n секунд;
- •Примеры.
- •Как и в случае сценариев, к подпрограмме функции можно обратиться по имени, более того функции могут быть компонентами математических выражений и операндов, а также параметрами других функций.
- •5.4 Создание подпрограмм с переменным списком входных и выходных параметров
- •5.5 Локальные и глобальные переменные
- •5.6 Созданий функций пользователя и указателей на функции. Функции как аргументы функций.
- •5.8 Сообщения об ошибках
- •6 Ввод данных и работа с файлами
- •6.1 Использование рабочей области Workspace
- •6.2 Чтение и запись неформатированных файлов
- •6. 3 Работа с текстовыми и бинарными файлами
- •6.3.1 Команды открытия и закрытия файлов
- •6.3.2 Команды чтения и записи fread и fwrite
- •6.4 Операции над форматированными файлами
Pause – останавливает выполнение программы до момента нажатия любой клавиши на клавиатуре; pause(n) – останавливает выполнение программы на n секунд;
choice = menu('title','opt1','opt2',...,'optn') – создает компонент "меню пользователя" с заголовком title и кнопками с надписями opti. Возвращает значение choice – количество пунктов меню.
Примеры.
Команда disp
1.1. >> x = [1 2 3]; % задание значения вектора х
>> disp(x) % вывод значения вектора х
1 2 3
При необходимости вывода значений нескольких переменных, их необходимо привести к одному типу и оформить в виде вектора.
1.2. >> disp(['The values of x are: ', x]) % попытка вывода двух значений разного
The values of x are: % типа (пояснительного текста и вектора х)
1.3. >> disp(['The values of x are: ', num2str(x)]); % вывод двух значений с
The values of x are: 1 2 3 % приведением к одному типу
Команда sprintf.
>> Str = [65 66 67 pi];
sprintf('%s %f', Str)
ans = ABC 3.141593
Команда input.
3.1. >> x=input('Задайте значение вектора х : ')
Задайте значение вектора х : [1 2 3] % ввод значений вектора
x = результат вода
1 2 3
3.2. >> reply = input('Do you want more? Y/N [Y]: ', 's'); % считывание симвоьного
Do you want more? Y/N [Y]: y % значения
>> reply
reply =y
Команда sscanf.
>> s = '4.83 3.16 22 45'; % задание строки
>> [A,n,err,next] = sscanf(s, '%f') считывание строки
А = 4.8300 – значение векора А
3.1600
22.0000
45.0000
n = 4 – количество элеменов
еrr= '' – сообщение об ошибке
next = 16 – длинна строки+1
Команда menu.
4
.1.
>> choice = menu('Choose a color','Red','Green','Blue') –
выполнение команды приводит к появлению
в левом верхнем углу объекта меню с
заголовком – 'Choose a color' и тремя кнопками
(пунктами): Red, Green, Blue (рис. 1.9).
Рис. 1.9 Объект меню
4.2 Составим последовательность команд циклического выполнения меню. Для выхода из цикла введем еще один четвертый пункт: Exit. Цикл будет выполняться, пока номера выбранных пунктов будут меньше четырех. Так при нажатии на первую клавишу на экране появится текст Red, на третью – Blue. При нажатии на последнюю клавишу, которая соответствует ситуации choice==4, цикл завершится и меню закроется.
>> choice=1;
while choice<4
choice = menu('Choose a color','Red','Green','Blue','Exit');
i
f
choice==1,
disp('Red');
elseif choice==2,
disp('Green');
elseif choice==3,
disp('Blue');
end
end
Red
Blue
Контрольные вопросы
1. Как записывается оператор условия if?
2. Какие модификации условного оператора if предусмотрены в среде MATLAB?
3. В чем разница между использованием ключевых слов else и elseif?
4. Запишите условный оператор if для определения знака заданной переменной var.
5. В каких случаях следует использовать оператор switch? Опишите синтаксис оператора switch.
6. Какие типы циклических процессов реализованы в среде MATLAB?
7. В чем отличия между операторами while и do while?
8. Опишите синтаксис пошагового цикла for.
9. Какие команды предусмотрены в среде MATLAB для управления циклическими процессами?
10. С помощью каких команд можно осуществлять ввод данных в диалоговом режиме?
11. Какие команды предусмотрены в среде MATLAB для вывода результатов?
12. Какую особенность имеет команда вывода disp и как с ее помощью можно реализовать вывод значений нескольких переменных?
13. С помощью каких команд можно приостановить выполнение программы?
14. Опишите синтаксис команд sprintf и sscanf?
15. С помощью какой команды можно реализовать диалог в виде меню?
16. Какую структуру должна иметь программа для реализации диалога на основе меню? Приведите пример.
Упражнения.
1. В течение недели прводили замер температуры воздуха. Составте програмный код, результатом выполнения которого будет список дней недели, когда погода была хорошей (считать погоду хорошей, если температура воздуха больше 15 градусов).
Подсказка. Сформируйте вектор температур, найдите вектор, где единицы будут указывать на хорошую погоду. Обработайте этот векто, сопоставив номеру расположения 1 день недели.
2. Пусть задана полуокружность радуса 5 с центром в точке (5; 2). пуст задаются координати некоторой точки (x; y). Составить программный код, определяющий – принадлежит ли точка области полукруга.
Подсказка. Для определения области составте уравнения, ограничивающие область полуокружности.
3. используя
циклический процесс найти
сумму ряда:
с точностью до второго знака после
запятой.
4. На оснве меню
создайте программу, позволяющую
вычислять значения
,
,
.
Подсказка. В основу положите меню с пятью клавишами. где первая клавиша будет служить для ввода значения переменной х, следующие три клавиши для вычисления соответствующей функции и последняя – для завершения работы.
4. Посчитайте количество отрицательных значений функции при с шагом 0,05. Сформируйте вектор значений функции, удавив из него отрицательные значения.
5. Пусть задано n-значное натуральное число. определить количество цифр в числе и найти сумму этих цифр.
Подсказка. Необходимо сформировать вектор из цифр заданого числа. Для выполнения этой задачи можо воспользоваться делением на степень 10 и функцией округления.
6. Используя
структуру "меню" реализуйте
вичисление сложной функции:
.
7. Сформируйте
матрицу случайных чисел с нормальным
законом распределения. Сформируйте
вектор значений v,
удовлетворяющих условию:
5 Режим программирование в среде MATLAB
5.1 Создание М-файлов
Работа из командной строки MATLAB не очень удобна, если требуется вводить много команд и часто их изменять. Самым удобным способом выполнения групп команд MATLAB является использование М-файлов. Для работы с М-файлами предназначен редактор М-файлов доступ, к которому осуществляется следующим образом:
раскройте меню File основного окна MATLAB;
в пункте New выберите подпункт M-file.
Открывается окно редактора M-файлов (рис. 1.10).
Рис. 1.10 Пример окна редактора создания М-файлов
При создании М-файлов удобно пользоваться комментариями. Так комментарии, которые находятся в начале файла, будут отображаться на экране при выполнении команды:
help имя_файла,
что позволяет, не прерывая работы, выбирать необходимый файл. Комментарии, которые стоят после пустой строки или в тексте М-файла при его выполнении пропускаются.
После ввода текста. М-файл необходимо сохранить, присвоив ему уникальное имя, далее этот файл можно использовать, обращаясь к нему по имени.
Пример.
Создадим М-файл с именем s_1, в котором задаются и выводятся на экран значения двух переменных х, у. На рис. 1.11 приведен текст М-файла, после создания которого, его необходимо сохранить и ниже – получение справки о его назначении с помощью команды help и запуск на выполнение в командном окне.
Рис. 1.11 Текст М-файла и обращение к нему в командном окне
В окне редактора М-файлов можно набирать как группы команд – сценарии, так и создавать свои подпрограммы-функции. В версии MATLAB 7 в пункте главного меню File →New предусмотрено три типа М-файлов (рис. 1.12)
Рис. 1.12 Меню выбора окна для создания М-файла
Когда идет речь о подпрограммах, то следует учитывать зону видимости данных. Этот вопрос будет рассмотрен далее.
М-файлы можно сохранять на диске и вызывать, обращаясь к ним по имени. Для того, что бы М-файл был доступен, необходимо в окне текущего каталога, который находится на верхней панели инструментов, указать к нему путь. Установка путей в MATLAB также дублируются командами. Текущий каталог устанавливается командой cd.
Синтаксис.
cd path – устанавливает путь к каталогу, заданому параметром path. Команда cd, вызванная без аргумента, выводит путь к текущему каталогу.
Также для установки путей используется команда path, позволяющая дополнять список доступных каталогов.
Синтаксис.
path('newpath') – устанавливает путь к каталогу newpath;
path(path,'newpath') – добавляет путь к каталогу newpath с низшим приоритетом поиска;
path('newpath',path) – добавляет путь к каталогу newpath с высшим приоритетом поиска.
Удалить путь из списка можно при помощи команды rmpath.
Синтаксис.
rmpath('directory') – удаляет путь к каталогу, заданому символьным параметром directory из списка путей.
Просмотреть содержимое текущего каталога можно с помощью команды dir. Эта команда позволяе создать список всех приложений в каталоге:
>> files = dir('dirname').
5.2 Создание сценариев (script-файлов)
Сценарии (script-файлы) являются самым простым типом M-файла – у них нет входных и выходных аргументов. Они используются для автоматизации многократно выполняемых вычислений. Сценарии оперируют данными из рабочей области и могут генерировать новые данные в рабочую область для последующей обработки в этом же файле, т. е. они являются глобальными (доступными для подпрограмм-функций). Их можно сохранять после завершения сценария для дальнейшей работы.
Создание сценария выполняется следующим образом:
команды набираются в окне редактора;
запоминаются на диске в виде файла с расширением .m (имя файла должно содержать только латинские буквы);
в окне Current Directory, которое находится на верхней панели инструментов, указывается путь к файлу или путь задается командой path;
вызов файла осуществляется набором его имени в строке командного окна.
Подпрограммы сценарии позволяют создавать програмный код, минуя режим интерпретатора, что позволяет упростить и ускорить работу в програмной среде. Они особо удобны в тех случаях, когда многократно используется типичный программный код или при написании фрагментов интерфейса, которые состоят из достаточно простых алгоритмов, но громоздки по своему программному представлению.
На рис. 1.13 показано создание М-файла reorg.m, который сохранен на диске C:\Documents and Settings\Lena\Мои документы\MATLAB и его выполнение в командном окне. Скрипт-файл выполняет процедуру сдвига значений вектора.
Рис. 1.13 Текст подпрограммы-функции смещения значений вектора и ее вызов в командном окне
5.3 Создание М-файлов подпрограмм-функций
М-функции являются M-файлами, которые допускают наличие входных и выходных аргументов. Они работают с переменными в пределах собственной рабочей области, отличной от рабочей области системы MATLAB (рис. 1.14).
Рис. 1.14 Окно создания М-функции
Структура M-функции:
function y = name(x) – строка определения функции;
% текст – первой строки комментария;
% текст – собственно комментария;
<операторы> – тела функции,
где
function – ключевое слово, определяющее М-функцию;
y – выходной аргумент (если их несколько, то они объединяются в вектор);
name – имя функции (должно содержать буквы только латинского алфавита и точно совпадать с именем файла на диске в котором функция храниться);
x – входной аргумент (фиктивные переменные). Если входных данных несколько, то они перечислятся через запятую (например, x1,x2,…).
В программах-функциях в среде MATLAB отсутствует оператор, обозначающий окончания текста программы. Если функция возвращает несколько переменных, объединенных в вектор, то при обращении к ней слева необходимо ставить вектор соответствующей длинны.
Пример.
Заголовок функции с несколькими входными и выходными аргументами:
function [x, y, z] = fangle(alpha, betta, gamma)
Обращение к даннофй функции:
>> [a b c]=fangle(alpha, betta, 0.12);