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

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
 
(не показані 25 проміжних версій 2 учасників)
Рядок 2: Рядок 2:
  
 
Інколи при роботі з '''MATLAB''' в режимі калькулятора з’являється необхідність повторення проведених дій. Тому розрахунки зі складними переходами по визначеним умовам, з часто повторюваними діями потребують спеціального оформлення у вигляді програм.
 
Інколи при роботі з '''MATLAB''' в режимі калькулятора з’являється необхідність повторення проведених дій. Тому розрахунки зі складними переходами по визначеним умовам, з часто повторюваними діями потребують спеціального оформлення у вигляді програм.
 +
 +
 +
== '''Розробка алгоритмів''' ==
 +
MATLAB надає зручні засоби для розробки алгоритмів, включаючи високорівневі з використанням концепцій об'єктно-орієнтованого програмування. У ньому є всі необхідні засоби інтегрованого середовища розробки, включаючи відладчик і профайлер. Функції для роботи з цілими типами даних полегшують створення алгоритмів для мікроконтролерів і інших додатків, де це необхідно.
 +
 +
 +
== '''Візуалізація даних''' ==
 +
У складі пакету MATLAB є велика кількість функцій для побудови графіків, у тому числі тривимірних, візуального аналізу даних і створення анімованих роликів.
 +
Вбудована середу розробки дозволяє створювати графічні інтерфейси користувача з різними елементами управління, такими як кнопки, поля введення і іншими. За допомогою компонента MATLAB Compiler ці графічні інтерфейси можуть бути перетворені в самостійні додатки, для запуску яких на інших комп'ютерах необхідна встановлена ​​бібліотека MATLAB Component Runtime.
  
 
== '''Функції функцій''' ==
 
== '''Функції функцій''' ==
Рядок 21: Рядок 30:
 
Як файли-функції оформлюються окремі процедури і функції, ті частини програми, що розраховані на неодноразове використання файлами-сценаріями або іншими процедурами при змінених значеннях вихідних параметрів , і не можуть бути виконані, якщо до того не задані значення вхідних змінних.<br>
 
Як файли-функції оформлюються окремі процедури і функції, ті частини програми, що розраховані на неодноразове використання файлами-сценаріями або іншими процедурами при змінених значеннях вихідних параметрів , і не можуть бути виконані, якщо до того не задані значення вхідних змінних.<br>
  
Правила оформлення М-файлів:
+
=== Правила оформлення М-файлів: ===
  
 
*  Кожен оператор записується в новому рядку.<br>
 
*  Кожен оператор записується в новому рядку.<br>
Рядок 30: Рядок 39:
 
*  В програмах MATLAB немає символу що позначає кінець програми.<br>
 
*  В програмах MATLAB немає символу що позначає кінець програми.<br>
 
*  Змінні не описуються і не оголошуються. Будь-яке ім'я при виконанні сприймається як ім'я “змінної”.<br>
 
*  Змінні не описуються і не оголошуються. Будь-яке ім'я при виконанні сприймається як ім'я “змінної”.<br>
 
 
  
 
Найбільша різниця в різному сприйманні системою імен змінних в файлах цих двох типів.<br>
 
Найбільша різниця в різному сприйманні системою імен змінних в файлах цих двох типів.<br>
Рядок 39: Рядок 46:
 
Перший рядок (заголовок) файлу функції має наступний вигляд:<br>
 
Перший рядок (заголовок) файлу функції має наступний вигляд:<br>
  
    function <<b>ПВХВ</b>> = <ім'я процедури>(<<b>ПВВ</b>>)
+
'''function <<b>ПВХВ</b>> = <ім'я процедури>(<<b>ПВВ</b>>)'''
  
 
'''ПВХВ''' – перелік вхідних величин
 
'''ПВХВ''' – перелік вхідних величин
Рядок 46: Рядок 53:
 
Файли-сценарії такого рядка ''не мають''.
 
Файли-сценарії такого рядка ''не мають''.
  
Приклад виклику функції функції<br>
+
=== Приклад виклику функції функції ===
  
    quad(‘<ім'я функції>’, a, b)
+
'''quad(‘<ім'я функції>’, a, b)'''
    ode45(‘<ім'я функції>’, tspan, y0, options)
+
'''ode45(‘<ім'я функції>’, tspan, y0, options)'''
  
== '''Приклад М-файла''' ==
+
=== '''Приклад М-файла''' ===
 +
 
 +
'''Файл ► Новий ► М-файл'''
 +
 
 +
'''function y = F1(x,d)''' <br>
 +
'''% Процедура, що вираховує значення''' <br>
 +
'''% функції''' <br>
 +
'''% y = (d^3)*ctg(x)*sqrt(sin(x)^4 – cos(x)^4).''' <br>
 +
'''% Звертання (виклик) – y = F1(x,d).''' <br>
 +
'''y = (d^3)*ctg(x)*sqrt(sin(x)^4 – cos(x)^4)''' <br>
 +
 
 +
Зберегти файл з ім'ям '''F1.m'''
 +
 
 +
==== Робота прикладу ====
 +
 
 +
'''>> y = F1(1,0.1)'''
 +
 
 +
Отримаємо результат: '''y = 4.1421e-004''' <br>
 +
 
 +
'''>> zet = 0 : 0.3 : 1.8;'''
 +
'''>> my = F1(zet,1)'''
 +
 
 +
Результат: '''Warning: Divide by zero''' ''Ділення на нуль'' <br>
  
Аналогічно можна отримати вектор одразу всіх значень вказаної функції при різних значеннях аргументу, якщо їх зібрати в один вектор (ZET).
 
  
 
== '''Графічне оформлення результатів''' ==
 
== '''Графічне оформлення результатів''' ==
  
Обчислювальна програма в більшості випадків призначена для дослідження деяких явищ, поведінки пристроїв що розроблюються. Інформація що отримується в результаті виконання таких програм, як правило має вигляд ряду чисел кожне з яких відповідає значенню конкретного параметра (аргументу).Таку інформацію зручно представляти в графічному вигляді.
+
Обчислювальна програма в більшості випадків призначена для дослідження деяких явищ, поведінки пристроїв що розроблюються.<br>
Для створення графічного інженерного документа в MATLAB необхідно використовувати функцію subplot.
+
Інформація що отримується в результаті виконання таких програм, як правило має вигляд ряду чисел кожне з яких відповідає значенню конкретного параметра (аргументу). Таку інформацію зручно представляти в графічному вигляді.<br>
Розглянемо як виконується розбивка графічного вікна на окремі поля для графіків і текстове під вікно.
+
Для створення графічного інженерного документа в '''MATLAB''' необхідно використовувати функцію '''subplot'''.<br>
 +
 
 +
'''subplot (m, n, p)'''
 +
 
 +
'''m''' – вказує на скільки частин розбивається графічне вікно по вертикалі <br>
 +
'''n''' – по горизонталі <br>
 +
'''p''' – номер підвікна в якому буде будуватись графік <br>
 +
 
 +
Розглянемо як виконується розбивка графічного вікна на окремі поля для графіків і текстове під вікно.<br>
 
Наприклад треба розділити все поле графічного вікна на три частини так, щоб в верхній частині вікна знаходилось поле виводу тексту, а в нижніх двох третинах – єдине поле для виводу графіків.
 
Наприклад треба розділити все поле графічного вікна на три частини так, щоб в верхній частині вікна знаходилось поле виводу тексту, а в нижніх двох третинах – єдине поле для виводу графіків.
Це можна зробити так:
+
Це можна зробити так:<br>
перед виводом текстової інформації в графічне вікно треба використати команду subplot(3,1,1), за допомогою якої графічний екран буде розділений на три однакові частини по вертикалі (підвікна) і для наступного виводу буде використана верхня частина.
+
* перед виводом текстової інформації в графічне вікно треба використати команду subplot(3,1,1), за допомогою якої графічний екран буде розділений на три однакові частини по вертикалі (підвікна) і для наступного виводу буде використана верхня частина.<br>
Для того щоб вивести графіки в графічне під вікно введіть команду subplot(3,1,[2 3]), в результаті виконання графічне вікно, як і раніше, розділиться по вертикалі на три підвікна, але для виводу графічної інформації використано простір що зайнятий двома нижніми під вікнами.
+
* Для того щоб вивести графіки в графічне підвікно введіть команду subplot(3,1,[2 3]), в результаті виконання графічне вікно, як і раніше, розділиться по вертикалі на три підвікна, але для виводу графічної інформації використано простір що зайнятий двома нижніми під вікнами.<br><br>
 +
Розглянемо роботу функції '''subplot()'''.<br>
 +
Введемо наступні команди в вікні Command Window:<br>
  
== '''Вивід тексту в графічне вікно''' ==
+
'''subplot(3,4,[5 6 7])'''
Якщо сформувати підвікна, не виконуючи ніяких операцій по виводу графіків або тексту, то в вікні фігури з’явиться зображення пустих підвікон.
+
'''subplot(3,4,1:3)'''
Наприклад якщо ввести команди
+
'''subplot(3,4,9:11)'''
(слайд 12)
+
'''subplot(3,4,[4 8 12])'''
В результаті отримаємо графічне вікно
+
 
(слайд ?)
+
Виконавши цей код система відобразить<br>
Ви бачите що з’явилось зображення осей координат з зазначенням поділок по осям. Початковий діапазон зміни координат по обох осях підвікна встановлений по замовчанню від 0 до 1. Поле, призначене для виводу графіків, займає не весь простір відповідного підвікна – залишається простір для виводу заголовка графіка, надписів по осям координат та інше.
+
<center> [[Файл:subplot_matlab.JPG]] </center>
Для того, щоб вивести текст в одне з підвікон, треба спочатку видалити із даного підвікна зображення осей координат і надписів на них. Це можна зробити за допомогою команди axis(‘off’).
+
 
Якщо виконати цю команду після попередніх, в вікні фігури зникає зображення координатних осей останнього підвікна. Після цього можна починати виведення тексту в нього.
+
Для виводу графіків на полотно достатньо ввести вираз подубови графіка одразу після оголошення параметрів полотна:<br>
Основною функцією, що забезпечує вивід тексту в графічне вікно є функція text. Звернення до неї має наступний вигляд:
+
'''subplot(3,4,[5 6 7])'''<br>
Слайд (14)
+
'''plot(x*2);'''<br>
Дана функція здійснює вивід конкретного тексту визначеним шрифтом вказаного розміру, початок тексту знаходиться в точці підвікна з координатами х і у відповідного поля графіка підвікна. При цьому координати х і у виміряються в одиницях величин що відкладáються вздовж відповідних осей графіка підвікна. Вказані координати виміряються в діапазоні від 0 до одиниці. Тому щоб вивід тексту починався в точці всередині поля графіка, його координати х і у повинні знаходитись в цьому діапазоні. Але можна використовувати і більш широкий діапазон, враховуючи те, що поле підвікна більше поля його графіка.
+
'''subplot(3,4,1:3)'''<br>
Приклади звернення
+
'''plot(x*2+3)'''<br>
Слайд (15)
+
'''subplot(3,4,9:11)'''<br>
 +
'''plot(x*3-12)'''<br>
 +
'''subplot(3,4,[4 8 12])'''<br>
 +
'''plot(x*20)'''<br>
 +
 
 +
<center> [[Файл:Subplot2_matlab.JPG‎]] </center>
  
 
== '''Ввід і вивід інформації в діалоговому режимі''' ==
 
== '''Ввід і вивід інформації в діалоговому режимі''' ==
Для того, щоб забезпечити взаємодію з користувачем в процесі виконання М-файла, в системі МАТЛАБ використовуються команди: 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>
 +
<center> [[Файл:menu_matlab.JPG]] </center>
 +
 
 +
Виконання програми тимчасово призупиняється, і система чекає вибору однієї з кнопок  меню. Після відповіді вихідному параметру "k" присвоюється значення номера обраної альтернативи  (1, 2, ..., n). <br>
 +
У загальному випадку число альтернатив може бути до 32.  Тепер, в залежності від отриманого значення цього параметра, можна побудувати процес розгалуження обчислень, наприклад, вибору параметра, значення
 +
якого потрібно змінити.<br>
 +
Команда pause тимчасово припиняє виконання програми до тих пір,
 +
поки користувач не натисне будь-яку клавішу клавіатури. Якщо після назви
 +
команди вказати в дужках деяке позитивне ціле число n, то затримка
 +
виконання програми буде здійснена протягом n секунд. <br>
 +
Якщо в тексті М-файлу зустрічається команда '''keyboard''', то виконання М-файлу припиняється, і управління передається клавіатурі.<br> Цей спеціальний режим роботи супроводжується появою в командному  вікні MatLAB нового виду запрошення до дій
 +
'''К>>'''
 +
У цьому режимі користувач може здійснити будь-які дії, перевірити або змінити дані. При цьому йому доступні всі команди та процедури  системи MatLAB. Для завершення роботи в цьому режимі необхідно ввести команду '''return'''. Тоді система продовжить роботу програми з оператора, наступного за командою '''keyboard'''.
 +
 
 +
 
 +
== '''Робота з файлами''' ==
 +
Створення програм часто припускає збереження результатів розрахунків у файли для їх подальшого аналізу, обробки, зберігання і т.п. У зв'язку з цим у MatLab реалізовані різні функції по роботі з файлами, що містять дані в самих різних форматах.
 +
Функції save і load
 +
save <ім'я файлу> <імена змінних>% збереження даних
 +
load <ім'я файлу> <імена змінних>% завантаження даних
 +
 
 +
Функція save дозволяє зберігати довільні змінні програми у файл, який буде (за замовчуванням) розташовуватися в робочому каталозі (зазвичай піддиректорія work) і мати розширення mat. Функція load дозволяє завантажити із зазначеного mat-файл раніше збережені змінні.
 +
function save_load
 +
x = 29;
 +
y = 5;
 +
s = 'hello';
 +
 
 +
save params x y s;
 +
x = 44
 +
y = 0;
 +
s = '';
 +
 
 +
load params x y s;
 +
disp(x);
 +
disp(y);
 +
disp(s);
 +
На екран будуть виведені тіж самі значення, що були перші збережені.
 +
 
 +
Функції fwrite і fread
 +
Недоліком розглянутих функцій save і load є те, що вони працюють з певними форматами файлів (зазвичай mat-файли) і не дозволяють завантажувати або зберігати дані в інших форматах. Тим часом буває необхідність завантажувати інформацію, наприклад, з бінарних файлів, створених іншими програмними продуктами для подальшої обробки результатів у MatLab. З цією метою були розроблені функції
 +
 
 +
fwrite (<ідентифікатор файлу>, <змінна>, <тип даних>) та
 +
<змінна> = fread (<ідентифікатор файлу>);
 +
<змінна> = fread (<ідентифікатор файлу>, <розмір>);
 +
<змінна> = fread (<ідентифікатор файлу>, <розмір>, <точність>);
 +
Тут <ідентифікатор файлу> - це покажчик на файл, з яким передбачається працювати. Щоб отримати ідентифікатор, використовується функція
 +
<ідентифікатор файлу> = fopen (<ім'я файлу>, <режим роботи>);
 +
Наприклад
 +
fid = fopen ('my_file.dat', 'rb');% відкриття файлу на читання
 +
if fid == -1 % перевірка коректності відкриття
 +
    error ('File is not opened');
 +
end
 +
B = fread (fid, 5, 'double'); % читання 5 значень double
 +
disp (B); % відображення на екрані
 +
fclose (fid); % закриття файлу
 +
 
 +
Функції fscanf  і fprintf
 +
 
 +
Оскільки  вихідними результатами багатьох програм є текстові файли, в яких явним чином записані числа або текст, то використовуються дані функції. Наприклад, при експорті даних з MS Excel можна отримати файл формату
 +
[value, count] = fscanf(fid, format, size)
 +
и записи
 +
count = fprintf(fid, format, a,b,...)
 +
Тут value - результат зчитування даних з файлу; count - число прочитаних (записаних) даних; fid - покажчик на файл; format - формат читання (записи) даних; size - максимальне число зчитувальних даних; a, b, .. - Змінні для запису у файл.
 +
function fscanf_ex
 +
fid = fopen ('my_excel.dat', 'r');
 +
if fid == -1
 +
    error ('File is not opened');
 +
end
 +
S = fscanf (fid, '% d,% f,% f,% f,% f,% d');
 +
fclose (fid);
 +
Форматний рядок записан у вигляді '% d,% f,% f,% f,% f,% d'. Це означає, що спочатку має бути прочитане цілочисельне значення з файлу, потім, через кому має читатися другого дійсне значення, потім третє і так далі до останнього цілочисельного значення.
 +
Щоб зберегти вірний формат даних, функцію fscanf () у наведеному прикладі слід записати так:
 +
S = fscanf (fid, '% d,% f,% f,% f,% f,% d', [6 4]);
 +
Тоді на виході вийде матриця S розміром в 6 стовпців і 4 рядки з відповідними числовими значеннями.

Поточна версія на 08:07, 27 травня 2013

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

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


Розробка алгоритмів

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


Візуалізація даних

У складі пакету MATLAB є велика кількість функцій для побудови графіків, у тому числі тривимірних, візуального аналізу даних і створення анімованих роликів. Вбудована середу розробки дозволяє створювати графічні інтерфейси користувача з різними елементами управління, такими як кнопки, поля введення і іншими. За допомогою компонента MATLAB Compiler ці графічні інтерфейси можуть бути перетворені в самостійні додатки, для запуску яких на інших комп'ютерах необхідна встановлена ​​бібліотека MATLAB Component Runtime.

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

Багато важливих універсальних процедур в 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.


Робота з файлами

Створення програм часто припускає збереження результатів розрахунків у файли для їх подальшого аналізу, обробки, зберігання і т.п. У зв'язку з цим у MatLab реалізовані різні функції по роботі з файлами, що містять дані в самих різних форматах. Функції save і load save <ім'я файлу> <імена змінних>% збереження даних load <ім'я файлу> <імена змінних>% завантаження даних

Функція save дозволяє зберігати довільні змінні програми у файл, який буде (за замовчуванням) розташовуватися в робочому каталозі (зазвичай піддиректорія work) і мати розширення mat. Функція load дозволяє завантажити із зазначеного mat-файл раніше збережені змінні. function save_load x = 29; y = 5; s = 'hello';

save params x y s; x = 44 y = 0; s = ;

load params x y s; disp(x); disp(y); disp(s); На екран будуть виведені тіж самі значення, що були перші збережені.

Функції fwrite і fread Недоліком розглянутих функцій save і load є те, що вони працюють з певними форматами файлів (зазвичай mat-файли) і не дозволяють завантажувати або зберігати дані в інших форматах. Тим часом буває необхідність завантажувати інформацію, наприклад, з бінарних файлів, створених іншими програмними продуктами для подальшої обробки результатів у MatLab. З цією метою були розроблені функції

fwrite (<ідентифікатор файлу>, <змінна>, <тип даних>) та <змінна> = fread (<ідентифікатор файлу>); <змінна> = fread (<ідентифікатор файлу>, <розмір>); <змінна> = fread (<ідентифікатор файлу>, <розмір>, <точність>); Тут <ідентифікатор файлу> - це покажчик на файл, з яким передбачається працювати. Щоб отримати ідентифікатор, використовується функція <ідентифікатор файлу> = fopen (<ім'я файлу>, <режим роботи>); Наприклад fid = fopen ('my_file.dat', 'rb');% відкриття файлу на читання if fid == -1 % перевірка коректності відкриття

    error ('File is not opened');

end B = fread (fid, 5, 'double'); % читання 5 значень double disp (B); % відображення на екрані fclose (fid); % закриття файлу

Функції fscanf і fprintf

Оскільки вихідними результатами багатьох програм є текстові файли, в яких явним чином записані числа або текст, то використовуються дані функції. Наприклад, при експорті даних з MS Excel можна отримати файл формату [value, count] = fscanf(fid, format, size) и записи count = fprintf(fid, format, a,b,...) Тут value - результат зчитування даних з файлу; count - число прочитаних (записаних) даних; fid - покажчик на файл; format - формат читання (записи) даних; size - максимальне число зчитувальних даних; a, b, .. - Змінні для запису у файл. function fscanf_ex fid = fopen ('my_excel.dat', 'r'); if fid == -1

    error ('File is not opened');

end S = fscanf (fid, '% d,% f,% f,% f,% f,% d'); fclose (fid); Форматний рядок записан у вигляді '% d,% f,% f,% f,% f,% d'. Це означає, що спочатку має бути прочитане цілочисельне значення з файлу, потім, через кому має читатися другого дійсне значення, потім третє і так далі до останнього цілочисельного значення. Щоб зберегти вірний формат даних, функцію fscanf () у наведеному прикладі слід записати так: S = fscanf (fid, '% d,% f,% f,% f,% f,% d', [6 4]); Тоді на виході вийде матриця S розміром в 6 стовпців і 4 рядки з відповідними числовими значеннями.