Програмування в MATLAB

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Програмування в середовищі MATLAB

Інколи при роботі з MATLAB в режимі калькулятора з’являється необхідність повторення проведених дій. Тому розрахунки зі складними переходами по визначеним умовам, з часто повторюваними діями потребують спеціального оформлення у вигляді програм.

Функції функцій

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

М-файли і їх типи.

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

М-файли є двох типів:

  • Файли-функції
  • файли-сценарії.

Зберігаються з розширенням .m, тому їх неможна розрізнити по розширенню імені.

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

Правила оформлення М-файлів:

  • Кожен оператор записується в новому рядку.
  • В рядку можна розмістити декілька операторів через крапку з комою або кому.
  • Довгий оператор можна записувати в дек. рядків. При цьому рядок повинен завершуватись трьома крапками.
  • Для виводу проміжних результатів треба НЕ ставити в кінці оператора знак “;”.
  • Коментарій виділяється знаком “%”.
  • В програмах MATLAB немає символу що позначає кінець програми.
  • Змінні не описуються і не оголошуються. Будь-яке ім'я при виконанні сприймається як ім'я “змінної”.

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

Перший рядок (заголовок) файлу функції має наступний вигляд:

   function <ПВХВ> = <ім'я процедури>(<ПВВ>)

ПВХВ – перелік вхідних величин ПВВ – перелік вихідних величин

Файли-сценарії такого рядка не мають.

Приклад виклику функції функції

   quad(‘<ім'я функції>’, a, b)
   ode45(‘<ім'я функції>’, tspan, y0, options)

Приклад М-файла

Файл ► Новий ► М-файл

   function y = F1(x,d) 
 % Процедура, що вираховує значення
 % функції
 % y = (d^3)*ctg(x)*sqrt(sin(x)^4 – cos(x)^4).
 % Звертання (виклик) – y = F1(x,d).
y = (d^3)*ctg(x)*sqrt(sin(x)^4 – cos(x)^4)

Зберегти файл з ім'ям F1.m

Робота прикладу

   >> y = F1(1,0.1)

Отримаємо результат: y = 4.1421e-004

   >> zet = 0 : 0.3 : 1.8;
   >> my = F1(zet,1)

Результат: Warning: Divide by zero Ділення на нуль


Графічне оформлення результатів

Обчислювальна програма в більшості випадків призначена для дослідження деяких явищ, поведінки пристроїв що розроблюються.
Інформація що отримується в результаті виконання таких програм, як правило має вигляд ряду чисел кожне з яких відповідає значенню конкретного параметра (аргументу). Таку інформацію зручно представляти в графічному вигляді.
Для створення графічного інженерного документа в MATLAB необхідно використовувати функцію subplot.

   subplot (m, n, p)

m – вказує на скільки частин розбивається графічне вікно по вертикалі
n – по горизонталі
p – номер підвікна в якому буде будуватись графік

Розглянемо як виконується розбивка графічного вікна на окремі поля для графіків і текстове під вікно.
Наприклад треба розділити все поле графічного вікна на три частини так, щоб в верхній частині вікна знаходилось поле виводу тексту, а в нижніх двох третинах – єдине поле для виводу графіків. Це можна зробити так:

  • перед виводом текстової інформації в графічне вікно треба використати команду subplot(3,1,1), за допомогою якої графічний екран буде розділений на три однакові частини по вертикалі (підвікна) і для наступного виводу буде використана верхня частина.
  • Для того щоб вивести графіки в графічне під вікно введіть команду subplot(3,1,[2 3]), в результаті виконання графічне вікно, як і раніше, розділиться по вертикалі на три підвікна, але для виводу графічної інформації використано простір що зайнятий двома нижніми під вікнами.

Розглянемо роботу функції subplot().
Введемо наступні команди в вікні Command Window:

   subplot(3,4,[5 6 7])
   subplot(3,4,1:3)
   subplot(3,4,9:11)
   subplot(3,4,[4 8 12])

Виконавши цей код система відобразить

Subplot matlab.JPG

Для виводу графіків на полотно достатньо ввести вираз подубови графіка одразу після оголошення параметрів полотна:

   subplot(3,4,[5 6 7])
   plot(x*2);
   subplot(3,4,1:3)
   plot(x*2+3)
   subplot(3,4,9:11)
   plot(x*3-12)
   subplot(3,4,[4 8 12])
   plot(x*20)
Subplot2 matlab.JPG

Ввід і вивід інформації в діалоговому режимі

Для забезпечення взаємодії з користувачем у процесі виконання М-файлу в системі 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

Введення інформації з клавіатури в діалоговому режимі можна здійснити за допомогою функції input. Звернення до неї має вигляд:

   x = input ('<запрошення>') 

призводить до наступних дій ПК: виконання операторів програми припиняється, ПК переходить в режим очікування закінчення вводу інформації з клавіатури. Після закінчення введення з клавіатури (яке визначається натисканням клавіші <Enter>) введена інформація запам'ятовується в програмі під ім'ям "х", і виконання програми продовжується.
Зручним інструментом вибору деякої з альтернатив майбутніх обчислювальних дій є функція menu MatLAB, яка створює поточне вікно меню користувача. Функція menu має такий формат звернення:

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

Таке звернення призводить до появи на екрані меню, зображеного на рис.:

Menu matlab.JPG
Виконання програми тимчасово призупиняється, і система чекає вибору однієї з кнопок  меню. Після відповіді вихідному параметру "k" присвоюється значення номера обраної альтернативи  (1, 2, ..., n). 

У загальному випадку число альтернатив може бути до 32. Тепер, в залежності від отриманого значення цього параметра, можна побудувати процес розгалуження обчислень, наприклад, вибору параметра, значення якого потрібно змінити.
Команда pause тимчасово припиняє виконання програми до тих пір, поки користувач не натисне будь-яку клавішу клавіатури. Якщо після назви команди вказати в дужках деяке позитивне ціле число n, то затримка виконання програми буде здійснена протягом n секунд.
Якщо в тексті М-файлу зустрічається команда keyboard, то виконання М-файлу припиняється, і управління передається клавіатурі.
Цей спеціальний режим роботи супроводжується появою в командному вікні MatLAB нового виду запрошення до дій

   К>> 

У цьому режимі користувач може здійснити будь-які дії, перевірити або змінити дані. При цьому йому доступні всі команди та процедури системи MatLAB. Для завершення роботи в цьому режимі необхідно ввести команду return. Тоді система продовжить роботу програми з оператора, наступного за командою keyboard.