Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи роботи в MATLAB.doc
Скачиваний:
23
Добавлен:
10.11.2018
Размер:
253.44 Кб
Скачать

Елементи мови програмування matlab

Мова програмування MATLAB має декілька структур для керування потоками, аналогічні їх прототипам в інших мовах програмування:

  1. умовний оператор – може використовуватись в одній із трьох форм:

if умова

оператори

end

if умова

оператори1

else

оператори2

end

if умова1

оператори1

elseif умова2

оператори2

elseif умова_n

оператори_n

else

оператори

end

Під умовою розуміється довільний вираз, який переважно містить операції порівняння та логічні операції (табл. В.4), істинність чи хибність якого розуміється як відмінність чи рівність нулю.

Таблиця В.4

Оператори порівняння

Логічні оператори

Булеві величини

==

Дорівнює

~ (not)

Заперечення

1

True

~=

Не дорівнює

& (and)

Логічне “і”

0

False

<

Менше

| (or)

Логічне “або”

>

Більше

<=

Менше або дорівнює

>=

Більше або дорівнює

  1. оператор вибору – виконує ту чи іншу групу операторів в залежності від значення виразу (чи змінної), при цьому виконується лише перший відповідний випадок:

switch вираз

case значення1

оператори1

case {значення2,…}

оператори2

otherwise % може бути відсутнім

оператори_n

end

Примітка. В MATLAB всі символи, що розміщені після знака % вважаються коментарем.

  1. оператор циклу for – виконує групу операторів всередині циклу фіксовану кількість разів:

for змінна циклу = початкове значення:крок:кінцеве значення

оператори

end

Якщо крок дорівнює одиниці, то його можна не вказувати:

for змінна циклу = початкове значення:кінцеве значення

оператори

end

  1. оператор циклу while – виконує групу операторів всередині циклу, поки виконується логічна умова:

while умова

оператори

end

Оператор continue здійснює перехід до наступної ітерації в циклі for або while, пропускаючи всі команди всередині циклу, що йдуть після нього.

Команду break використовують для дострокового виходу з циклу. У вкладених циклах break виконує вихід з внутрішнього циклу.

M-файли

Більшість вбудованих функцій MATLAB зберігаються у так званих M-файлах (файлах з розширенням .m), які містять команди мови MATLAB. Користувач може створити свою власну функцію, сформувавши для цього відповідний М-файл у редакторі M-файлів. Даний редактор викликається з головного меню MATLAB командами File  New  M-file, або з командного рядка – командою edit, після якої через пробіл можна вказати ім’я М-файлу. До створеної користувачем функції можна звертатись таким же чином, як і до вбудованих функцій.

Розрізняють два типи M-файлів: сценарії та функції.

Файли-сценарії містять послідовність команд середовища MATLAB. Можуть мати довільну назву, обов’язковим є тільки розширення .m. Викликається сценарій введенням назви імені файлу в командному рядку. Сценарії не приймають та не повертають ніяких аргументів, вони оперують існуючими змінними в робочій області (глобальними) та можуть самі створювати нові змінні, що залишаються в Workspace. Типовим випадком використання сценаріїв є запис команд у М-файл, замість їх введення у командному рядку.

Файли-функції можуть мати вхідні та вихідні аргументи. Ім’я функції та М-файлу (з розширенням .m) повинні співпадати. Змінні, що використовуються в М-функціях по замовчуванню є локальними, хоча існує можливість оголошення глобальних змінних. Структура функції має вигляд:

function [вихідні аргументи]=ім’я функції(вхідні аргументи)

% Основний коментар

% Додатковий коментар

Тіло функції (виконуваний код)

Перший рядок містить оголошення списку вихідних аргументів (записаних через кому), імені функції та вхідних аргументів (записаних через кому). Без такого рядка файл буде сприйматись як сценарій, а не як функція. Для позначення змінних можна використовувати різні літери і для назви функцій – різні імена (але назва функції та М-файлу повинні співпадати!). Оскільки всі змінні в функції є локальними, то їх імена не впливають на імена та значення змінних у робочій області.

Наступні після заголовку функції рядки, що починаються з символу %, є коментарями. Вони надають довідкову інформацію про призначення даної функції, формати звернення до неї і т.і. Ці рядки виводяться в командне вікно після введення команди допомоги

>> help ім’я функції

Перший рядок (основний коментар) відображається також при використанні команди lookfor.

Приклад В.12. Визначимо функцію f (x)=x – x2/4 в M-файлі з ім’ям f.m. В редакторі M-файлів вона записується наступним чином:

function y=f(x)

y=1+x-x.^2/4;

Функцію, одного разу збережену в М-файлі, можна викликати в командному вікні MATLAB так само, як і будь-яку іншу функцію. Наприклад, щоб обчислити достатньо ввести в командному рядку:

>> cos(f(3))

ans =

-0.1782

Зауважимо, що завдяки використанню поелементних операцій, вхідним аргументом функції f може бути не тільки одне число, але й вектор. Результатом обчислень в такому випадку також буде вектор:

>> x=[0 2 3];

>> f(x)

ans =

1.0000 2.0000 1.7500

М-файл може містити в собі не одну, а декілька функцій зі своїми вхідними та вихідними аргументами. В такому випадку основною є функція, записана на початку файлу, її ім’я повинно співпадати з ім’ям М-файлу. Всі інші функції, розташовані нижче основної функції, називаються підфункціями, і є допоміжними. Змінні, визначені в підфункції, є локальними, вони доступні тільки в межах цієї підфункції. Основна функція обмінюється даними з підфункціями за допомогою вхідних та вихідних аргументів.

Приклад В.13. Обчислити суму .

Введемо в редакторі наступні функції та збережемо їх у M-файлі з ім’ям suma.m:

function S=suma(n)

S=0;

for k=1:n

S=S+1/fact(k);

end

function f=fact(n)

%підфункція для обчислення n!

f=1;

for i=1:n

f=f*i;

end

Тут suma – основна функція, а fact – допоміжна підфункція, призначена для обчислення факторіалу. Звертатись до функції fact можна лише в межах М-файлу suma.m, на відміну від функції suma, яка є доступною для всіх інших функцій MATLAB.

Щоб знайти значення суми при , достатньо ввести :

>> suma(5)

ans =

1.7167

Вхідними та вихідними аргументами функцій, окрім чисел та векторів, можуть бути також і матриці.

Приклад В.14. Знайти суму та добуток всіх додатних елементів заданої матриці.

Введемо наступну функцію в редакторі М-файлів та збережемо її у файлі з ім’ям posdob.m:

function [S,D]=posdob(A)

S=0;

D=1;

[n,m]=size(A);

for i=1:n

for j=1:m

if A(i,j)>0

S=S+A(i,j);

D=D*A(i,j);

end

end

end

Тут size(A) – вбудована функція для визначення розміру матриці A: n – кількість рядків, m – кількість стовпчиків. В MATLAB також є вбудована функція length(x), яка знаходить довжину вектора x.

Знайдемо суму та добуток додатних елементів матриці :

>> B=[0 -1; 5 8];

>> [S,D]=posdob(B)

S =

13

D =

40

Якщо при зверненні до функції posdob не вказати жодного вихідного аргументу, або вказати лише один аргумент, то результатом буде сума додатних елементів матриці (тобто значення змінної, що стоїть першою у списку вихідних аргументів).

Часто в ході виконання М-функцій необхідно вивести те чи інше повідомлення (наприклад, про помилку чи попереджуюче) в командне вікно, чи ввести додаткові дані. Для взаємодії з користувачем в MATLAB існує декілька вбудованих функцій:

  • warning('Текст попереджуючого повідомлення') – виводить текст попереджуючого повідомлення у командне вікно;

  • error('Текст повідомлення про помилку') – виводить текст повідомлення про помилку в командне вікно та коректно завершує виконання програми;

  • disp(масив або рядок) – виведення проміжних результатів у командне вікно;

  • змінна=input('Підказка')–введення з клавіатури значення змінної.

17