Відмінності між версіями «Програмування в MATLAB»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
(Графічне оформлення результатів)
Рядок 112: Рядок 112:
  
 
<center> [[Файл:Subplot2_matlab.JPG‎]] </center>
 
<center> [[Файл:Subplot2_matlab.JPG‎]] </center>
 
== '''Вивід тексту в графічне вікно''' ==
 
Якщо сформувати підвікна, не виконуючи ніяких операцій по виводу графіків або тексту, то в вікні фігури з’явиться зображення пустих підвікон.
 
Наприклад якщо ввести команди
 
(слайд 12)
 
В результаті отримаємо графічне вікно
 
(слайд ?)
 
Ви бачите що з’явилось зображення осей координат з зазначенням поділок по осям. Початковий діапазон зміни координат по обох осях підвікна встановлений по замовчанню від 0 до 1. Поле, призначене для виводу графіків, займає не весь простір відповідного підвікна – залишається простір для виводу заголовка графіка, надписів по осям координат та інше.
 
Для того, щоб вивести текст в одне з підвікон, треба спочатку видалити із даного підвікна зображення осей координат і надписів на них. Це можна зробити за допомогою команди axis(‘off’).
 
Якщо виконати цю команду після попередніх, в вікні фігури зникає зображення координатних осей останнього підвікна. Після цього можна починати виведення тексту в нього.
 
Основною функцією, що забезпечує вивід тексту в графічне вікно є функція text. Звернення до неї має наступний вигляд:
 
Слайд (14)
 
Дана функція здійснює вивід конкретного тексту визначеним шрифтом вказаного розміру, початок тексту знаходиться в точці підвікна з координатами х і у відповідного поля графіка підвікна. При цьому координати х і у виміряються в одиницях величин що відкладáються вздовж відповідних осей графіка підвікна. Вказані координати виміряються в діапазоні від 0 до одиниці. Тому щоб вивід тексту починався в точці всередині поля графіка, його координати х і у повинні знаходитись в цьому діапазоні. Але можна використовувати і більш широкий діапазон, враховуючи те, що поле підвікна більше поля його графіка.
 
Приклади звернення
 
Слайд (15)
 
  
 
== '''Ввід і вивід інформації в діалоговому режимі''' ==
 
== '''Ввід і вивід інформації в діалоговому режимі''' ==
Для того, щоб забезпечити взаємодію з користувачем в процесі виконання М-файла, в системі МАТЛАБ використовуються команди: disp, sprintf, input, menu, keyboard, pause.
+
Для забезпечення взаємодії з користувачем у процесі виконання М-файлу в системі MatLAB використовуються такі команди:  
Команда disp здійснює вивід значень вказаної змінної або вивід тексту в командне вікно. Звертання до неї має вигляд:
+
'''disp, sprintf, input, menu, keyboard, pause'''. <br>
Слайд 16
+
Команда '''disp''' здійснює вивід значень вказаної змінної або вказаного тексту в командне вікно. Звернення до неї має вигляд: <br>
Особливістю даної команди являється те, що аргумент у неї може бути тільки один.
+
    '''disp''' (<змінна або текст в апострофах>)
Ввід інформації з клавіатури в діалоговому режимі можна здійснити за допомогою функції input. Звернення
+
Особливістю цієї команди є те, що аргумент у неї може бути тільки один. Тому без спеціальних заходів неможливо здійснити вивід кількох змінних ,так як і об'єднання тексту з чисельними значеннями деяких змінних, що часто необхідно для зручного представлення інформації.<br>
Слайд 17
+
Для усунення цього недоліку використовують декілька способів.  Щоб вивести значення декількох змінних в один рядок (наприклад,  при створенні таблиць даних), потрібно створити єдиний об'єкт, який містив б всі ці значення. Це можна зробити, об'єднавши відповідні змінні в вектор, користуючись операцією створення вектора-рядка:<br>
Приведе до наступних дій, - виконання програми призупиняється і комп’ютер чекає натиснення Ентер після введення даних з клавіатури.
+
    x = [x1 x2 ... x].
Гарним інструментом вибору однієї з альтернатив майбутнього обчислювального процесу є функція menu , яка створює поточне вікно користувацького меню. Звернення
+
Тоді вивід значень декількох змінних в один рядок буде мати
 +
вигляд:<br>
 +
    disp ([x1 x2 ... x])
 +
Наведемо приклад:<br>
 +
 
 +
    » 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'''
 +
 +
Аналогічно можна сполучати кілька текстових змінних, наприклад:<br>
 +
 
 +
    » x1=' psi '; x2=' fi '; x3=' teta '; x4=' w1 ';
 +
    » disp([x1 x2 x3 x4])
 +
    psi fi teta w1
 +
 
 +
Введення інформації з клавіатури в діалоговому режимі можна здійснити за   допомогою функції input. Звернення до неї має вигляд: <br>
 +
    x = input ('<запрошення>')
 +
призводить до наступних дій ПК: виконання операторів програми припиняється, ПК переходить в режим очікування закінчення вводу інформації з клавіатури. Після закінчення введення з клавіатури (яке визначається натисканням  клавіші <Enter>) введена інформація запам'ятовується в програмі під ім'ям  "х", і виконання програми продовжується. <br>
 +
Зручним інструментом вибору деякої з альтернатив майбутніх обчислювальних дій є функція menu MatLAB, яка створює поточне вікно меню користувача. Функція menu має такий формат звернення: <br>
 +
    k = menu ( 'Заголовок меню', 'Альтернатива1', 'Альтернатива2',...,' Альтернатива n ').
 +
 
 +
Таке звернення призводить до появи на екрані меню, зображеного на
 +
рис.:<br>

Версія за 13:21, 4 червня 2009

Програмування в середовищі 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 ').

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