Система математичних розрахунків MATLAB

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Державний інженерний університет Вірменії
MATLAB
НАВЧАЛЬНИЙ ПОСІБНИК
Гаспарян Олег Миколайович
Д.т.н, с.н.с
2005

ЗМІСТ
Система математичних розрахунків MATLAB 4
Робочий стіл (desktop) системи MATLAB 5

Загальні властивості і можливості робочого столу MATLAB 5

Отримання довідок (Getting Help) 7
Робочий простір системи MATLAB 13

Перегляд і редагування масивів даних при допомоги 13

редактора Array Editor 16
Шляхи доступу системи MATLAB 18

Операції з файлами 20

Дуальність (подвійність) команд і функцій 23

Дії над матрицями в системі MATLAB 24

Двокрапка (Colon) 28

Рішення систем лінійних рівнянь 30

Ступені матриць і матричні експоненти 35

Власні значення та власні вектори 37

Поліноми і інтерполяція 41

Аналіз даних і статистика 50

Багатовимірні Масиви 65

Створення багатовимірних масивів 66
Організація та зберігання даних 74
Масиви структур 75
Масиви осередків 86
Програмування на MATLAB-е 97
Типи даних 108
Команди управління даними (Flow Control) 114
Додаток 1. Тематичні напрямки системи MATLAB 121
Додаток 2. Команди загального призначення
(General purpose commands) 123

Додаток 3. Оператори та спеціальні символи 126

Додаток 4. Елементарні математичні функції

(Elementary math functions). 127

Додаток 5. Елементарні матриці та операції над ними

                            (Elementary matrices and matrix manipulation)
Додаток 6. - Матричні функції і лінійна алгебра
                              (Matrix functions - numerical linear algebra) 129
Додаток 7. Поліноми і інтерполяція
(Interpolation and polynomials) 132

Додаток 8. Аналіз даних і перетворення Фур'є

(Data analysis and Fourier transforms) 133

Додаток 9. Функції символьних рядків
(Character strings) 135
Довідник з базових функцій
системи MATLAB 137

Система математичних розрахунків MATLAB
Система MATLAB (Скорочення від MATrix LABoratory - Матрична Лабораторія) розроблена фірмою The MathWorks, Inc. (США, г.Нейтік, шт. Массачусетс) і є інтерактивною системою для виконання інженерних і наукових розрахунків, яка орієнтована на роботу з масивами даних. Система використовує математичний співпроцесор і допускає звернення до програм, написаним на мовах Fortran, C і C + +.
Найбільш відомі області застосування системи MATLAB:
· Математика і обчислення;
· Розробка алгоритмів;
· Обчислювальний експеримент, імітаційне моделювання;
· Аналіз даних, дослідження і візуалізація результатів;
· Наукова та інженерна графіка;
· Розробка програм, включаючи графічний інтерфейс
користувача.
MATLAB - це інтерактивна система, основним об'єктом якої є масив, для якого не потрібно вказувати розмірність явно. Це дозволяє вирішувати багато обчислювальні задачі, пов'язані з векторно-матричними формулюваннями, істотно скорочуючи час, необхідний для програмування на скалярних мовах типу Fortran або C. Будучи орієнтованою на роботу з реальними даними, ця система виконує всі обчислення в арифметиці з плаваючою точкою, на відміну від систем комп'ютерної алгебри REDUCE, MACSYMA, DERIVE, Maple, Mathematica, Theorist, де переважає цілочисельне уявлення і символьна обробка даних.
Система MATLAB - це одночасно і операційне середовище і мова програмування. Одна з найбільш сильних сторін системи полягає в тому, що на мові MATLAB можуть бути написані програми для багаторазового використання. Користувач може сам написати спеціалізовані функції і програми, які оформляються у вигляді М-файлів. У міру збільшення кількості створених програм виникають проблеми їх класифікації і тоді можна спробувати зібрати споріднені функції в спеціальні папки. Це призводить до концепції пакетів прикладних програм (Application Toolboxes або просто Toolboxes), які представляють собою колекції М-файлів для вирішення певної задачі або проблеми.
У дійсності Toolboxes - це щось велике, ніж просто набір корисних функ-цій; часто це результат роботи багатьох дослідників з усього світу, які об'єд-нуються в групи по самим різним інтересам, починаючи від нейтронних мереж, диференціальних рівнянь в приватних похідних, сплайн- апроксимації, статистики та розмитих множин до проектування робастних систем управління, теорії сигналів, ідентифікації, а також моделювання лінійних і нелінійних динамічних систем за допомогою виключно ефективного пакету SIMULINK. Саме тому пакети прикладних програм MATLAB Application Toolboxes, що входять до складу сімейства продуктів MATLAB, дозволяють перебувати на рівні найсучасніших світових досягнень у різних галузях науки і техніки.
Виклик і вихід з MATLAB
Виклик MATLAB-а. Для виклику системи MATLAB потрібно подвійне натискання на іконку в робочому столі Windows. При інсталяції MATLAB-а стартовою директорією по умовчанням чанію є $ matlabroot \ work, де $ matlabroot є директорія, де встановлені файл-и системи MATLAB.
При виклику, система MATLAB автоматично виконує головний М-файл (master M-file) matlabrc.m., І файл startup.m (есді останній існує). Файл matlabrc.m, які розташований в директорії local, зарезервований фірмою The MathWorks, а в многопользова-тельских системах може бути використаний також системним менеджером. Файл startup.m призначений для завдання ряду стартових опцій (можливостей) на розсуд користувача. Ви можете змінити вихідні шляхи доступу (див. далі), ввести заздалегідь певні змінні в робочий простір, змінити поточну директорію і т.д. Стартовий файл startup.m слід ввести в директорію $ matlabroot \ toolbox \ local (більш докладно з даним питанням можна ознайомитися в довідкових посібниках з MATLAB-у).
Вихід з MATLAB-а. Для закінчення сеансу роботи з MATLAB слід вибрати опцію Exit MATLAB (Вихід з MATLAB) у меню File на робочому столі MATLAB-а, або надруковані-тать quit (Вихід) у командному вікні Command Window.
При виході, MATLAB виконує спеціальний файл finish.m, що відноситься до типу сценаріїв-ев (див. далі), якщо тільки цей файл існує в поточній директорії або де-небудь на шляху доступу системи MATLAB. Файл finish.m створюється користувачем. Він повинен містити функції або операції, які користувач бажає автоматично виконати при виході з системи MATLAB, наприклад, такі як збереження робочого простору чи виклик діалогового вікна, що запитує підтвердження виходу. У зазначеній вище дирек-торії $ matlabroot \ toolbox \ local є два файли, які користувач може вико-ти в якості зразка при створенні свого файлу finish.m:
• finishsav.m - Включає функцію save, що призводить до автоматичного запам'ятовування робо-чого простору при виході з MATLAB-а.
• finishdlg.m - Виводить на екран підтверджує діалогове вікно, яке дозволяє Анну-ліровать вихід.
Робочий стіл (desktop) системи MATLAB
Робочий стіл системи MATLAB містить наступні інструментальні вікна, частина з яких не з'являється при початковому запуску:
• Command Window (Командна Вікно) - Виконує всі функції і команди системи
MATLAB.
• Command History (Історія Команд) - Перегляд функцій, введених раніше в
Command Window, їх копіювання і виконання.
• Launch Pad (Вікно Запуску) - Запускає всі інструменти і забезпечує доступ до
усіма пакунками системи MATLAB.
• Current Directory Browser (Вікно Перегляду Поточного Каталогу) - Перегляд файлів
MATLAB, а також супутніх файлів, а також виконання таких операцій
над файлами, як пошук і відкриття файлів.
• Help Browser (Вікно Перегляду Допомоги) - Пошук і перегляд документації по всіх
функцій і засобів системи MATLAB.
• Workspace Browser (Вікно Перегляду Робочого Простору) - Перегляд і зміна
змісту робочого простору (workspace) системи MATLAB.
• Array Editor (Редактор масивів даних) - Перегляд вмісту масивів даних,
записаних у вигляді таблиці і редагування даних.
• Editor / Debugger (Редактор / Відладчик) - Для створення, редагування та налагодження
М-файлів, тобто файлів, що містять функції системи MATLAB.
Загальний вигляд робочого вікна MATLAB представлений нижче (рис.1). Кожне з перерахованих вікон може бути виведено з конфігурації робочого столу натисканням кнопки зі стрілкою у верхньому правому куті вікна (див. мал. 1). Зворотна операція, тобто введення в загальну конфігурацію, здійснюється вибором опції Dock в меню View сответствующій вікна. Можна також змінити конфігурацію робочого столу шляхом переміщення будь-якого відкритому того вікна в нове положення. Для цього потрібно просто натиснути лівою клавішею миші на обрана назва вікна (Title Bar) і «перетягнути» його в бажаний стан.
Для відновлення стандартної конфігурації робочого столу MATLAB необхідно вибрати опцію Default (За умовчанням) в підменю Desktop Layout (План Робочого Столу) в меню View (Вид) будь-якого відкритого вікна системи. Всі вікна MATLAB містять також контекстне меню (context menu), яке викликається натисканням правої кнопки миші і містить найбільш часто вживані опції (функції), пов'язані з даним вікном.
Таким чином. в системі MATLAB є можливість зміни виду робочого столу шляхом відкриття, закриття, переміщення або зміни розмірів кожного з індивідуаль-них вікон.
Перегляд продуктів Перегляд або Кнопка для
і демонстраційних Виклик зміна поточної виведення вікна зі складу
роликів допомоги Введення функцій директорії робочого столу Закриття вікна

      Перегляд і виклик Перехід до робочого Натисненням лівої клавіші миші і переміщенням
введених раніше команд простору (Workspace) можна змінювати межі вікон
і до вікна поточного каталогу
Рис. 1. Загальний вигляд робочого столу системи MATLAB

Загальні властивості і можливості робочого столу MATLAB

Нижче наводиться вид інструментальної панелі системи MATLAB і вказано призначення основних кнопок.
Створити новий
М-файл Копіювати нову модельSimulink
                                                                                                               Перегляд або зміна
               Відкрити файл Undo поточного каталогаю
                                                                                                                Вибір використаних раніше         
                 Вирізати Вставити Redo Виклик Допомоги (Help) каталогів

Спливаюче вікно покажчика, Перегляд з метою зміни
описує кнопку поточного каталогу
Undo - скасування останньої дії; Redo - повторення останньої дії.
Рис. 2. Інструментальна лінійка (Toolbar) робочого столу
Command Window (Командна вікно)
1. Виконання функцій і введення змінних
Запрошення до введення команди (>>) у Command Window означає, що MATLAB готовий до прийому. При появі запрошення>> ви можете ввести змінну або виконати ко-манду. Наприклад, для створення 3х3 матриці А слід надрукувати
A = [1 2 3; 4 5 6; 8 липня 1910]
При натисканні клавіш Enter (або Return) після набору рядки, MATLAB реагує висновком наступного запису
A =
1 2 3
4 5 6
8 липня 1910.
При цьому змінна (матриця) запам'ятовується в робочому просторі (workspace) MATLAB.
Увага! Система MATLAB чутлива до вибору регістра, тобто MATLAB разли-чає змінні а і А! При написанні команди (функції) також не слід використати великі літери!
Для виконання функцій слід надрукувати функцію включаючи всі аргументи і натиснути Enter. При цьому MATLAB відобразить у командному вікні результат. Наприклад, надрукувавши
magic (2)
отримаємо
ans =
3 січня
4 2.
Якщо ви хочете ввести декілька командних рядків без їх негайного виконання, вос-користуйтеся комбінаціями Shift + Enter після введення кожного рядка. Подальше натиснення Enter призведе до виконання всіх введених рядків.
Запрошення K>> у командному вікні означає, що MATLAB знаходиться в режимі налагодження (debug mode). Даний режим буде детально розглянуто в подальшому.
2. Обчислення виділених функцій та виразів (Evaluating a Selection)
Для обчислення виділених виразів у командному вікні слід натиснути правою кнопкою миші і вибрати в контекстному меню опцію Evaluate Selection. Дана операція невозм-жна якщо система MATLAB зайнята, наприклад, виконує М-файл.
3. Відкриття виділення (Opening a Selection)
Для відкриття М-файлу деякої функції слід виділити цю функцію в командному вікні і вибрати в контекстному меню опцію Open Selection. Це призведе до відкриття данно-го файлу у вікні Редактора / відладчик (Editor / Debugger).
У наведених нижче таблицях дається короткий опис функцій MATLAB-а, призначений-них для роботи з масивами структур та осередків
Структури
Функція
Опис
fieldnames
Отримати імена полів
getfield
Отримати зміст поля
isfield
Істинно, якщо поле є в структурі
isstruct
Істинно, якщо структура
rmfield
Видалити поле
setfield
Встановити вміст поля
struct
Створити масив структур
struct2cell
Перетворити структуру в масив комірок
Осередки
Функція
Опис
cell
Створити масив комірок
cell2struct
Перетворити масив осередків в структуру
celldisp
Показати вміст масиву клітинок
cellfun
Застосувати функцію до масиву комірок
cellplot
Показати графічну структуру масиву клітинок
deal
Обмін даними між будь-якими класами масивів
iscell
Істинно для масивів комірок
num2cell
Перетворити числової масиву в масив комірок
МАСИВИ СТРУКТУР
Структури це масиви даних з пойменованими «сховищами» даних, званими п олямі. Поля структури можуть містити дані будь-якого типу. Наприклад, одне поле може містити текстовий рядок, що представляє ім'я (name), друге поле може містити скалярну змінну, яка є рахунком за лікування (billing), третє може містити матрицю результатів медичних аналізів (test) і так далі.

Як і звичайним масива даних, структурам притаманні основні властивості масивів. Одна структура є структурою розміру 1х1, точно так само як число 5 є числовим масивом розміру 1х1. Ви можете будувати структури з лбой допустимої розмірністю або форми, включаючи багатовимірні масиви структур.
Створення масивів структур
Є два наступних способу створення структур:
  • Шляхом використання операторів присвоювання.
  • З використанням функції struct.
Створення масивів структур із застосуванням операторів присвоювання.
Ви можете побудувати просту структуру розміру 1х1 шляхом прямого присвоювання значень індивідуальним полях. MATLAB при цьому автоматично конструює відповідну структуру. Наприклад, створимо 1х1 структуру даних пацієнта лікарні, показану на початку даного розділу. Для цього слід ввести такі записи:
                                   patient. name = 'John Doe';
                                   patient. billing = 127.00;
                                   patient. test = [79 75 73; 180 178 177.5; 220 210 205];
Якщо ввести тепер в командному рядку запис
                                  patient
то MATLAB відповість
name: 'John Doe'
billing: 127
                                 test: [3 x3 double]
patient є масивом, який являє собою структуру з трьома полями. Для розширенням-ня даного масиву потрібно просто додати відповідні індекси після імені струк-тури:
                                patient (2). name = 'Ann Lane';
patient (2). billing = 28.50;
patient (2). test = [68 70 68; 118 118 119; 172 170 169];
Структура patient має тепер розмір [1 2]. Відзначимо, що якщо масив структур містить більше одного елемента, то MATLAB вже не виводить на екран зміст окремих полів при введенні імені структури. Натомість, на дисплей видаються загальна інформація про вміст структури, тобто імена полів:
                                                Patient
patient =
1x2 struct array with fields:
name
                                                      billing
                                                      test
Для отримання даної інформації ви можете також використовувати функцію fieldnames. Ця функція видає масив комірок містять назви полів у формі рядка. Якщо ви розширюєте структуру, MATLAB запалняет ті поля, в які ви не ввели дані, порожніми матрицями так, що:
  • Всі структури в масиві мають однакове число полів.
  • Всі відповідні поля мають однакові імена.
Наприклад, при введенні
patient (3). name = 'Alan Johnson'
структура patient приймає розмір 1х3. При це обидва поля patient (3). Billing і patient (3). Test містять порожні матриці.
Увага! Розміри даних в однойменних полях можуть бути різними. У нашому при-міру зі структурою patient поля   name можуть мати різну довжину, поля   test можуть містити масиви числових даних різних розмірів і так далі.
Створення масиву структур з використанням функції struct.
Ви можете заздалегідь створити масив структур застосувавши функцію struct. Її основна форма має вигляд
str_ array = struct ('Поле1', знач1, 'поле2', знач2, ​​...)
де аргументами є імена полів та їх відповідні значення. Значенням поля мо-же бути або одне значення, представлене будь допустимої конструкцією в MATLAB-е, або масив комірок даних (масиви осередків розглянуті в наступному розділі). Всі значення полів у списку аргументів повинні мати однаковий вигляд (єдине значення або мас-сів осередків).
Ви можете використовувати різні методи для завдання масиву структур. Ці методи відрізняються способом ініціалізації полів структури. В якості прикладу розглянемо заду-ня структури розміру 1х3 з ім'ям weather (погода), що має поля temp (температура)
і rainfall (дощові опади). Три різні способи завдання такої структури дані у наведеній нижче таблиці.
Метод
Синтаксис
Завдання
Функція struct
weather (3) = struct ('temp', 72, 'rainfall', 0.0);
Структура weather (3) ініціалізується із зазначеними-ними значеннями полів. За-ля інших двох структур в масиві, weather (1) і weather (2), містять такими пе-тве даних порожні матриці.
Поєднання функцій struct і repmat
weather =
repmat (struct ('temp', 72,
'Rainfall', 0.0), 1, 3);
Всі структури в масиві weather инициализируются з використанням однакових значень однойменних полів.
Функція struct з використанням синтаксису осередків
weather =
struct ('temp', {68, 80, 72},
'Rainfall', {0.2,0.4,0.0});
Структури в масиві weather инициализируются з різними значеннями полів, заданих масивом осередків.
Звернення до даних у масивах структур.
Використовуючи індексацію масиву структур, можна здійснити звернення до даних будь-якого поля або будь-якого елемента поля в масиві структури. Аналогічним чином, ви можете за-дати значення будь-якого поля або елемента поля структури. Як приклад, використовува-го в даному розділі, розглянемо структуру, представлену на наведеному нижче малюнку.

Ви можете звернутися до подмассивов шляхом дабавленія стандартної індексації до імені масиву структур. Наприклад, наступний запис приводить до структури розміру 1х2
                                         mypatients = patient (1:2)
                                        1x2 struct array with fields:
name
                                        billing
                                        test
Перша структура в масиві mypatients збігається з першою структурою в масиві patient:
                                         mypatients (1)
ans =
name: 'John Doe'
billing: 127
test: [3 x3 double].
Для звернення до поля певної структури, потрібно додати крапку (.) Після імені стру-ктури, із зазначенням далі імені поля:
                                      str = patient (2). name
str =
Ann Lane
Для звернення до елементів усередині полів, слід додати необхідні індекси до імені поля. Якщо поле містить числовий масив, потрібно використовувати індексація цифрових масивів. Якщо поле містить масив комірок, використовуйте відповідну індексацію осередків і так далі. Наприклад,
                                     test2 b = patient (3). test (2,2)
                                     test2 b =
153
Аналогічну форму запису слід використовувати і для завдання значень змінних всередині поля, наприклад,
patient (3). test (2,2) = 7
Ви можете також одночасно витягти дані однойменних полів багатовимірної структу-ри. Наприклад, запис нижче створює вектор 1х3, що містить всі значення рахунків полів billing fields.
bills = [patient. billing]
                                                    bills =
127.0000 28.5000 504.7000
Аналогічно, ви можете створити масив комірок, що містить дані температур test для пер-вих двох структур.
tests = {patient (1:2). test}
tests =
[3x3 double] [3x3 double]
Звернення до полів структури із застосуванням функцій setfield і getfield
Пряма індексація зазвичай є найбільш ефективним способом завдання або отри-мання значень полів структури. Якщо, проте, ви знаєте тільки назву поля у вигляді рядка, наприклад, якщо ви використовували функцію fieldnames для одержання ім'я поля в межах M-файлу - то для зазначених операцій з даними цих полів можна також застосувати функ-ції setfield і getfield.
Функція getfield дозволяє отримати значення або значення поля або елемента поля і име-ет наступний синтаксис
f = getfield (array, {array_index}, 'field', {field_index})
де індекс field_ index є необов'язковим, а array_ index є необов'язковим для масиву структур розміру 1х1. Даний синтаксис відповідає запису
f = array (array_ index). field (field_ index)
Наприклад, для звернення до поля name у другій структурі масиву patient запишемо
str = getfield (patient, {2}, 'name')
Аналогічно, функція   setfield дає можливість задати значення полів використовуючи синтаксис
f = setfield (array, {array_index}, 'field', {field_index}, value)
Визначення розміру масиву структур
Для отримання розміру масиву структур або розміру будь-якого поля структури. можна вос-користуватися функцією size. При введенні в якості аргументу функції size імені структури, дана функція повертає вектор розмірностей масиву. Якщо задати аргумент у формі масив (n). Полі, функція   size повертає розмір вмісту поля. Наприклад, для нашої структури patient розміру 1х3, запис size (patient) повертає вектор [1 3]. Вираз size (patient (1,2). Name) повертає довжину рядка імені елемента (1,2) структури patient.
Додавання полів до структури
Ви можете додати поле до всіх структур в масиві додаванням поле до будь-якої одній структурі. Наприклад, для додавання поля номера соціальної страховки до масиву patient можна скористатися записом виду
patient (2). ssn = '000-00-0000 "
При цьому полі patient (2). Ssn другий паціекта має задане значення. Всі інші структу-ри в масиві структур також мають поле ssn, але ці поля містять порожні матриці до тих пір, поки ви не поставите в явному вигляді відповідні значення.
Видалення поля зі структури
Ви можете видалити всі поля заданої структури за допомогою функції rmfield. Її найбільш загальна форма має вигляд
struc2 = rmfield (array, 'field')
де array це масив структур, а 'field' є іменем поля, яке ви хочете видалити. Наприклад, щоб видалити поле name з масиву patient, потрібно ввести:
patient = rmfield (patient, 'name')
Застосування функцій і операторів
Ви можете здійснювати операції над полями і над елементами полів точно так само, як над будь-якими іншими масивами системи MATLAB. Для вибору даних, над якими потрібно зробити дії потрібно використовувати індексацію. Наприклад, наступне Вира-ються обчислює середнє значення вздовж рядків масиву test у patient (2):
mean ((patient (2). test) ')
Найчастіше бувають різні можливості для применеия функцій або операторів до полів масиву структур. Один із шляхів підсумовування всіх полів billing в структурі patient Виг-лядіт наступним чином:
                                             total = 0;
for j = 1: length (patient)
total = total + patient (j). billing;
end
Для спрощення подібних операцій, MATLAB надає можливість виробляти дей-наслідком одночасно з усіма однойменними полями масиву структур. Для цього потрібно просто укласти вираз (припустимо, array. Field) в квадратні дужки всередині применяе-мій функції. Наприклад, ви можете вирішити наведену вище завдання, записавши
total = sum ([patient. billing])
Подібна запис еквівалентна використанню так званого списку, розділеного комою (comma-separated list)
total = sum ([patient (1). billing, patient (2). billing ,...])
Такий синтаксис найбільш корисний у випадках, коли поле є скалярним операндом.
Створення функцій для операцій над масивами структур
Ви можете записати свої функції у вигляді М-файлів для роботи зі структурами будь ніс-тандартного форми. При цьому вам доведеться здійснити власний контроль помилок. Іншими словами, вам слід переконатися, що здійснюється перевірка дій над обраний-ними полями.
Як приклад, розглянемо набір даних, який описує вимірювання в різних моментах часу різних токсинів в джерелі питної води. Дані складаються з 15 різних спостережень, де кожне спостереження містить три незалежних виміру. Ви мо-жете організувати ці дані у вигляді набору 15 структур, де кожна структура має три поля, по одному для кожного проведеного виміру.
Наведена нижче функція concen, діє над масивом структур із специфічними ха-даними. Їхні характеристики повинні містити поля lead (свинець), mercury (ртуть),
і chromium (хром).
function [r1, r2] = concen (toxtest);
% Create two vectors. r1 contains the ratio of mercury to lead
% At each observation. r2 contains the ratio of lead to chromium.
r1 = [toxtest.mercury]. / [toxtest.lead];
r2 = [toxtest.lead]. / [toxtest.chromium];
% Plot the concentrations of lead, mercury, and chromium
% On the same plot, using different colors for each.
lead = [toxtest.lead];
mercury = [toxtest.mercury];
chromium = [toxtest.chromium];
plot (lead, 'r'); hold on
plot (mercury, 'b')
plot (chromium, 'y'); hold off
Ця функція створює два вектори. R1 містить ставлення ртуті до свинцю в кожному наб-режень, а r2 містить ставлення свинцю до хрому. Далі ця функція будує криві кон-центрації свинцю, ртуті та хрому на одному графіку, використовуючи різні кольори (червоний - сві-нець, синій - ртуть, жовтий - хром).
Спробуйте застосувати цю функцію на приклади структури test з наступними данна-ми
test (1). lead = .007; test (2). lead = .031; test (3). lead = .019;
test (1). mercury = .0021; test (2). mercury = .0009;
test (3). mercury = .0013;
test (1). chromium = .025; test (2). chromium = .017;
test (3). chromium = .10;
Організація даних в масиві структур
Ключ до організації масиву структур полягає у виборі способу, яким ви хочете звертатися до подмассивов даних або окремими даними структури. Це, у свою чергу, оп-начає як ви дольжни побудувати масив, що містить структури і як вибирати поля структури. Наприклад, розглянемо RGB зображення розміру 128х128, запам'ятоване в трьох різних масивах: RED, GREEN і BLUE.

Є щонайменше дві можливості для організації таких даних у масив струк-
тур.
Плоска організація поелементна організація

Плоска організація
У цьому варіанті, кожне поле структури представляє повну площину зображення в червоному, зеленому або синьому кольорах. Ви можете створити таку структуру використовуючи запис
                                                                   A. r = RED;
                                                                   A. g = GREEN;
                                                                   A. b = BLUE;
Подібний підхід дозволяє вам легко витягати повне зображення в окремих склад-ляющих квітів, для вирішення таких завдань як фільтрація. Наприклад, для звернення до всієї червоною площині потрібно просто записати
red_ plane = A. r;
Плоска організація має те додаткову перевагу, що масив структур можна без праці доповнити іншими зображеннями. Якщо у вас є набір зображень, ви Може-ті запам'ятати їх як A (2), A (3), і так далі, де кожна структура містить повне изобра-ються.
Недолік плоскою організації стає очевічним, коли вам потрібно звернутися до від-слушною частинам зображення. У цьому випадку ви повинні оперувати з кожним полем у від-дельности:
red_sub = Ar (2:12, 13:30);
grn_sub = Ag (2:12, 13:30);
blue_ sub = A. b (2:12, 13:30);
Поелементна організація
Цей варіант має ту перевагу, що забезпечує простий доступ до підмножини даних. Для організації даних в даній формі потрібно використовувати команди
                                for i = 1: size (RED, 1)
                                       for j = 1: size (RED, 2)
B (i, j). R = RED (i, j);
B (i, j). G = GREEN (i, j);
B (i, j). B = BLUE (i, j);
end
                               end
При поелементної організації, ви можете здійснити звернення до підмножини дан-них за допомогою єдиного виразу:
Bsub = B (1:10, 1:10);
Однак, звернення до повної площині зображення при поелементом методі потрібно цикл:
                                            red_plane = zeros (128,128);
for i = 1: (128 * 128)
red_plane (i) = B (i). r;
end
Поелементая організація не є кращим вибором для більшості додатків, свя-чених з обробкою зображень. Однак, вона може бути кращою для інших програм, коли вам потрібно часто звертатися до окремих підмножини полів структури. Приклад в наступному розділі демонструє даний тип прикладений
Приклад - Проста база даних
Розглянемо організацію простий бази даних.
А Плоска організація У поелементна організація

Обидва можливих способів організації бази даних має певні проімущества, що залежать від того, як ви хочете здійснити доступ до даних:
  • Плоска організація забезпечує більш легку можливість обчислень одночасним-аме над усіма полями. Наприклад, щоб знайти середнє значення всіх даних у полі amount слід записати:
а) При плоскій організації
avg = mean (A. amount);
б) При поелементної організації
avg = mean ([B. amount]);
Поелементна організація дає більш легкий доступ до всієї інформації, пов'язаної з одним клієнтом. Розглянемо М-файл, названий   client. m, який здійснює вивід на екран імені та адреси будь-якого клієнта. При використанні плоскою організації, слід вводити в якості аргументів індивідуальні поля:
function client (name, address, amount)
disp (name)
disp (address)
disp (amount)
Для виклику функції client для другого клієнта записуємо,
client (A.name (2,:), A.address (2,:), A. amount (2,:))
При використанні поелементой організації вводиться вся структура
function client (B)
disp (B)
Для виклику функції client для другого клієнта при цьому просто записуємо,
client (B (2))
  • Поелементна організація дозволяє більш просто розширювати поля масивів рядків. Якщо ви заздалегідь не знаєте максимальну довжину рядка при плоскій організації, вам може знадобитися часто коректувати поля name або address, щоб ввести більш довгі рядки.
Зазвичай дані не диктують вибору організації бази даних. Скоріше, ви самі повинні вирішити, як ви хочете здійснювати доступ і операції над даними.
Вкладені структури
Поле структури може містити іншу структуру, і навіть масив структур.Еслі ви вже маєте деяку структуру, то для вкладення нових структур у всі поля даної струк-тури ви можете скористатися як функцією struct, так і застосувати безпосередньо оператор присвоювання
Створення вкладених структур за допомогою функції struct
Для створення вкладених структур ви можете застосувати функцію struct. Наприклад, створимо масив структур розміру 1х1 із вкладеною в полі nest структурою:
A = struct ('data', [3 4 7; 8 0 1], 'nest', struct ('testnum', 'Test 1', 'xdata', [2 квітня 8], 'ydata', [1 липня 6]));
Застосуємо тепер оператори присвоювання для додавання сторого елемента до масиву А:
                                                   A (2). Data = [9 2 березня; 7 6 5];
A (2). Nest.testnum = 'Test 2';
A (2). Nest.xdata = [3 4 2];
A (2). Nest.ydata = [5 0 9];

Індексація вкладених структур
Для звернення до вкладених структурам, потрібно просто додати імена вкладених полів з використання точкових роздільників. Перша текстовий рядок в індексованих висловлю-ванні визначає масив структур, а наступні вирази дають доступ до полів, утримуючи-щим інші структури. Наприклад, масив А, створений раніше, має три рівні вкладення:
  • Для звернення до вкладеної структурі всередині А (1) запишемо A (1). Nest.
  • Для звернення до поля xdata у вкладеній структурі в A (2) запишемо A (2). Nest. Xdata.
  • Для звернення до елемента 2 поля ydata в A (1), запишемо A (1). Nest. Ydata (2).
МАСИВИ ОСЕРЕДКІВ
Масиви осередків це масиви даних системи MATLAB елементи яких є осередок-ми і можуть служити «сховищами» для інших масивів даних. Наприклад, одна клітинка масиву комірок може містити матрицю дійсних чисел, інша осередок - масив тек-стів рядків, а третя - вектор комплексних значень.

Ви можете конструювати масиви осередків будь-яких допустимих розмірностей і форм, вклю-чаю багатовимірні масиви осередків.
Створення масивів комірок
Ви можете створювати масиви осередків двома способами:
  • Використовуючи оператори присвоювання.
  • Використовуючи функцію cell, а потім призначаючи дані створених осередків.
Застосування операторів присвоювання
Ви можете створити масив комірок шляхом привласнення даних індивідуальним осередкам, по одній клітинці за один раз. MATLAB при цьому автоматично створює необхідний масив ніздрюватобетонних-ек. Існують два способи індексації даних осередків:
  • Індексація осередків
Укладіть індекси осередки у звичайні дужки з використанням стандартної індексації масивів. Укладіть вміст комірки в правій стороні оператора присвоювання в фігур-ні дужки "{}". Наприклад, створимо масив комірок А розміру 2х2.
                                          A (1,1) = {[1 4 3; 0 5 8; 2 липня 9]};
                                           A (1,2) = {'Anne Smith'};
                                          A (2,1) = {3 +7 i};
A (2,2) = {-pi: pi/10: pi};
Увага! Запис "{}" позначає порожній масив комірок, точно так само як "[]" позначає порожню матрицю для числових масивів. Ви можете використовувати порожній масив осередків в будь-яких виразах з масивами осередків.
  • Індексація вмісту клітинок
Укладіть індекси осередки у фігурні дужки, застосовуючи стандартні позначення масиву-вів. Задайте вміст комірки в правій частині оператора присвоювання в звичайному вигляді.
                                          A {1,1} = [1 4 3; 0 5 8; 2 липня 9];
A {1,2} = 'Anne Smith';
A {2,1} = 3 +7 i;
A {2,2} = - pi: pi/10: pi;
Різні приклади, наведені нижче, використовують обидва наведених синтаксису. Обидві фор-ми записи є цілком взаємозамінними.
Увага! Якщо ви вже маєте числовий масив із заданим ім'ям, не намагайтеся створити масив комірок за допомогою операторів присвоювання, не знищивши предаврітельно числовий масив. Якщо ви не очистите числовий масив, MATLAB прийме, що ви намагаєтеся «сме-шать» синтаксису осередків і числових масивів і видасть повідомлення про помилку.
MATLAB виводить вміст масиву осередків на дисплей у стислій формі. Для нашого мас-сива А ми отримаємо.
                                          A =
[3 x3 double] 'Anne Smith'
[3.0000 + 7.0000 i] [1 x21 double]
Для виведення повного змісту осередків, потрібно скористатися функцією celldisp. Для гра-фического виводу на дисплей архітектури осередку служить функція cellplot. Якщо ви призначають-чає дані комірці, яка знаходиться поза розмірності наявного масиву клітинок, MATLAB автоматично розширює масив, щоб включити заданий вами елемент. При цьому проміжні комірки заповнюються порожніми матрицями. Наприклад, наведений ні-ж оператор присвоювання перетворює масив комірок А розміру 2х2 в масив розміру 3х3.
A (3,3) = {5};
Всі інші комірки третього стовпця і третього рядка при цьому будуть містити порожні матриці.
Використання фігурних дужок для побудови масивів комірок
Фігурні дужки, "{}", є такими ж конструктурамі масивів комірок, як квадрат-ні дужки є конструкторами числових масивів. Фігурні дужки використовуються абсолютно аналогічно квадратних дужках, за тим винятком, що їх можна вико-ти для вкладення масивів комірок (див. нижче).
При конструюванні масивів з використанням фігурних дужок потрібно використовувати прогалини або коми, щоб розділити стовпців, та крапки з комою для розділення рядків. На-приклад, введення
C = {[1 2], [3 4]; [5 6], [7 8]};
призводить до наступного масиву осередків розміру 2х2

Для об'єднання окремих масивів комірок в нові масиви, ви можете використовувати квадратні дужки, як і при об'єднанні числових масивів.
Завдання масивів комірок за допомогою функції cell
Функція cell дозволяє створювати порожні масиви осередків заданого розміру. Наприклад, сле-ший вираз створює пустоймассів осередків розміру 2х2.
B = cell (2, 3);
Для заповнення клітинок масиву В потрібно прменіть оператори присвоювання:
B (1,3) = {1:3};
Доступ до даних масивів комірок
Ви можете витягувати дані з масивів комірок або ж запам'ятовувати дані в наявному або новоствореному масиві осередків двома способами:
  • Використанням індексації вмісту клітинок за допомогою звичайних індексів.
  • Використанням індексів, укладених у фігурні дужки.
Доступ до даних масивів комірок з використанням фігурних дужок
Ви можете використовувати індексування вмісту в правій частині виразу для обра-домлення до всіх даних у будь-якій окремій клітинці. Для цього в лівій частині виразу слід задати змінну для запису вмісту клітинки. Укладіть індекси осередків у фігурні дужки. Це означає, що ви звертаєтеся до осередки. Розглянемо наступний масив N розміру 2х2:
                                                       N {1,1} = [1 2; 4 5];
                                                       N {1,2} = 'Name';
                                                       N {2,1} = 2 - 4 i;
                                                       N {2,2} = 7;
Ви можете отримати рядок в N {1,2} записавши
c = N {1,2}
При введенні цього рядка MATLAB видасть
                                                                 c =
Name
Увага! У операторах присвоювання ви можете використовувати індексацію вмісту тільки для звернення до одній клітинці, а не до підмножини осередків. Наприклад, обидва вирази
  A {1,:} = value і B = A {1,:} є неправильними.
Для звернення до підмножини вмісту однієї клітинки потрібно об'єднати індексує-вання. Наприклад, щоб отримати елемент (2,2) масиву в комірці N {1,1}, слід записати:
d = N {1,1} (2,2)
що дасть
                                                                      d =
5
Звернення до підмножини масиву клітинок
Для привласнення будь-якого безлічі осередків деякої змінної, потрібно скористатися індексацією вмісту осередків. При цьому оператор двокрапки служить для доступу до під-множинам осередків у межах іассіва осередків.

Видалення клітинок
Ви можете видалити повністю будь-яку розмірність масиву осередків з використанням одного виразу. Як і в стандартному випадку видалення масивів, потрібно використовувати векторне індексування при видаленні рядків або стовпців масиву осередків, з прирівнянням даної розмірності порожній Мастріц, наприклад
.
A (:, 2) = []
При видалення клітинок, фігурні дужки взагалі не використовуються у відповідних ви-женіях.
Зміна форми (розмірностей) масиву комірок
Ка і у випадку будь-яких інших масивів, для зміни форми масиву комірок можна примі-нитка функцію reshape. При цьому загальне число осередків повинно залишитися тим же, тобто ви не можете використовувати цю функцію для додавання або видалення клітинок.
A = cell (3, 4);
size (A)
ans =
4 березня
B = reshape (A, 6,2);
size (B)
ans =
2 червня
Заміна списку змінних масивами осередків
Масиви осередків можуть бути Використовувати для заміни списку змінних MATLAB-а в на-дмуть випадках:
  • У списку вхідних аргументів.
  • У списку вихідних змінних.
  • В операціях відображення на дисплеї.
  • При конструюванні масивів (квадоатние дужки і фігурні дужки).
Якщо ви використовуєте оператор двокрапки для індексації набору осередків у поєднанні з фігур-ними дужками, то MATLAB звертається з кожною клітинкою як з окремою змінною. Наприклад, допустимо ви маєте масив комірок T, де кожна клітинка містить окремий століття-тор. Вираз T {1:5} еквівалентно списку векторів в перших п'яти осередках масиву   T, тобто воно рівносильне запису
[T {1}, T {2}, T {3}, T {4}, T {5}]
Розглянемо масив комірок C:
C (1) = {[1 2 3]};
C (2) = {[1 0 1]};
C (3) = {1:10};
C (4) = {[9 8 7]};
C (5) = {3};
Для згортки векторів в C (1) і C (2) з використанням функції conv, потрібно записати
d = conv (C {1:2})
d =
1 2 4 2 3
Для виведення на дисплей векторів з другого по четвертий введемо
C {2:4}
Це дасть

ans =
1 0 1
ans =
1 2 3 4 5 6 7 8 9 10
ans =
9 8 7
Аналогічно, ви можете створити новий числовий масив використовуючи вираз
B = [C {1}; C {2}; C {4}]
що призводить до
B =
1 2 3
1 0 1
9 8 7
Ви можете також використовувати відповідну індексацію в лівій частині оператора при-сваіванія для створення нового масиву осередків, де кожна клітинка містить один вихідний аргумент
[D {1:2}] = eig (B)
D =
[3x3 double] [3x3 double]
Нагадаємо, що при завданні двох вихідних аргументів, виходом функції eig (B) є модальна матриця, складена з нормованих власних векторів матриці B і ді-агональному матриця власних значень. Ви можете вивести в командне вікно дійсних значення власних векторів і значень вводячи D {1} і D {2}.
Застосування функцій і операторів
Для застосування функцій або операторів до вмісту осередків потрібно скористатися з-Відповідаю індексацією. Наприклад, задамо масив комірок А
                                                               A {1, 1} = [1 2; 3 4];
  A {1, 2} = randn (3,3);
                                                                A {1, 3} = 1: 5;
Тоді, для застосування функції sum до вмісту першого осередку масиву запишемо
B = sum (A {1,1})
Що призводить до наступного результату
B =
4 червня
Для застосування тієї ж функції до кількох осередок не вкладених масивів комірок, нуж-но застосувати цикл:
for i = 1: length (A)
M {i} = sum (A {1, i});
end
Організація даних в масивах осередків
Масиви осередків є корисними для створення бази даних, що складаються з масивів раз-особистих значень і типів. Масиви осередків є переважно структур у додатку нях, де:
  • Вам потрібен доступ до багатьох полях даних за допомогою одного звернення.
  • Ви хочете мати доступ до підмножини даних у вигляді списку значень.
  • У вас немає фіксованого набору імен полів.
  • Вам доводиться часто видаляти поля зі структури.
Як приклад звернення до набору безлічі полів за допомогою одного виразу допустимо, що ваші дані складаються з:
  • Масиву розміру 3х3, що складається з вимірів, отриманих експериментально.
  • Рядки з 15 символів, яка містить ім'я інженера.
  • Масиву розміру 3х4х5, що містить записи вимірювань за останні 5 експеримен-тов.
Для багатьох додатків, найкращим способом створення бази даних є структури. Однак, якщо ви постійно маєте справу тільки з першими двома полями даних, то масив комірок може бути більш зручним для цілей індексації.
Наведений нижче приклад показує як можна звернутися до перших двом елементам мас-сива осередків TEST.
[Newdata, name] = deal (TEST {1:2})
а наступний приклад демонструє те ж при організації даних у вигляді структури з тим же ім'ям TEST:
newdata = TEST.measure
name = TEST.name
Вкладення масивів комірок
Масив осередків може містити інший масив осередків і навіть масиву масивів комірок (Масиви, що не містять інші масиви осередків називаються листовими осередками (leaf cells).) Для ство-данія вкладених масивів комірок ви можете використовувати вкладені фігурні дужки, фу-нкцію cell, або безпосереднє застосування операторів присвоювання.
Створення вкладених масивів за допомогою вкладених фігурних дужок
Для зазначеної в заголовку цілі досить вкласти в необхідну осередку пару фігурних ско-пліч. Наприклад, введемо такі команди
clear A
A (1,1) = {magic (5)};
A (1,2) = {{[5 8 лютий, 7 3 0; 7 червня 3] 'Test 1'; [2 - 4i 5 + 7i] {17 []}}}
що дасть
A =
[5x5 double] {2x2 cell}
Відзначимо, що права частина другого оператора присвоювання укладена у дві пари фігурних дужок. Перша пара характеризує клітинку   cell (1,2) масиву осередків A. Другий "набір" дужок представляє масив комірок розміру 2х2 всередині зовнішньої осередки.
Створення вкладених масивів за допомогою функції cell
Для вкладення масиву клітинок за допомогою функції cell, потрібно призначити вихід функції cell сушествуют осередку. Наприклад,
1. Створимо порожній масив розміру 1х2
A = cell (1, 2);
2. Створимо масив комірок розміру 2х2 всередині A (1,2).
A (1,2) = {cell (2,2)};
3. Заповнимо масив А, використовуючи вирази
A (1,1) = {magic (5)};
A {1,2} (1,1) = {[5 2 серпня, 7 3 0; 7 червня 3]};
A {1,2} (1,2) = {'Test 1'};
A {1,2} (2,1) = {[2-4i 5 +7 i]};
A {1,2} (2,2) = {cell (1,2)}
A {1,2} {2,2} (1) = {17};
Відзначимо використання фігурних дужок до останнього рівня вкладених індексів.
Ви також можете конструювати вкладені масиви осередків безпосередньо з використанням ням операторів присвоювання, як це показано в кроці 3 вище.
Індексація вкладених масивів комірок
Для індексації вкладених осередків потрібно об'єднати вираження індексів. Перший набір індексів забезпечує доступ до верхнього рівня осередків, а наступні набори дужок забезпечують послідовний доступ до наступних рівнів. Наприклад, наступний масив має три рівні вкладення

  • Для доступу до масиву 5х5 осередку (1,1) використовуйте A {1,1}.
  • Для доступу до масиву 3х3 у позиції (1,1) осередку (1,2) використовуйте A {1,2} {1,1}.
  • Для доступу до осередку 2х2 у клітинці (1,2) використовуйте A {1,2}.
  • Для доступу до порожньої комірці в позиції (2,2) осередку (1,2) запишемо A {1,2} {2,2} {1,2}.
Перетворення між масивами осередків і числовими масивами
Для переходу від формату масиву осередків до числового масиву слід скористатися прог-Рамі, що включає цикл. Наприклад, створимо масив комірок F:
                                                     F {1,1} = [1 2; 3 4];
F {1,2} = [-1 0; 0 1];
F {2,1} = [7 8; 1 квітня];
F {2,2} = [4i 3 +2 i; 1 - 8i 5];
Використовуємо тепер три вкладених циклу для копіювання вмісту масиву F в число-вої масив NUM.
                                           
for k = 1:4
for i = 1:2
for j = 1:2
NUM (i, j, k) = F {k} (i, j);
end
end
                                          end
Аналогічно, ви повинні використовувати петлі for для присвоювання кожного значення число-вого масиву одній клітинці масиву осередків:
G = cell (1,16);
                                                  for m = 1:16
G {m} = NUM (m);
                                                      end
Масиви осередків, що містять структури
Для зберігання груп структур з різною архітектурою полів можна використовувати масиви осередків
c_str = cell (1,2);
c_str {1}. label = '12 / 2 / 94 - 12/5/94 ';
c_str {1}. obs = [47 52 55 48; 17 22 35 11];
c_str {2}. xdata = [-0.03 0.41 1.98 2.12 17.11];
c_str {2}. ydata = [-3 18 травня 0 9];
c_str {2}. zdata = [0.6 0.8 1 2.2 3.4];

Осередок l масиву c_ str містить структуру з двома полями, де в одному полі зберігається будів-ка символів, а в другому - вектор. Осередок 2 містить структуру з трьома полями векторів.
При створенні масивів комірок, що містять структури, ви повинні застосувати індексування-ня фігурними дужками. Аналогічно, ви повинні застосувати фігурні дужки для отри-мання структур, що містяться всередині осередків. Загальний синтаксис при цьому має вигляд:
cell_array {index}. field
Наприклад, щоб отримати вміст поля label структури в комірці 1 потрібно записати
c_str {1}. label
Багатовимірні масиви осередків
Як і у випадку числових масивів, загальні принципи створення багатовимірних масивів комірок засновані на розповсюдженні поняття двовимірних масивів комірок. Для створення багатовимірний-них масивів комірок ви можете застосувати функцію cat, цілком аналогічно її застосува-енію у разі числових масивів.
Наприклад, створимо простий тривимірний масив комірок С з двох масивів А і В:
                                                   A {1,1} = [1 2; 4 5];
A {1,2} = 'Name';
A {2,1} = 2 - 4i;
A {2,2} = 7;
B {1,1} = 'Name2';
B {1,2} = 3;
B {2,1} = 0:1:3;
B {2,2} = [4 5] ';
C = cat (3, A, B);
Загальна структура індексації масиву осередків С має вигляд

Багатовимірні масиви структур
Багатовимірні масиви структур явлеются розповсюдженням звичайних двовимірних, тобто плоских структур. Подібно іншим типам багатовимірних масивів, ви можете будувати їх як прямим присвоюванням, так і застосуванням функції cat.
patient (1,1,1). name = 'John Doe';
patient (1,1,1). billing = 127.00;
patient (1,1,1). test = [79 75 73; 180 178 177.5; 220 210 205];
patient (1,2,1). name = 'Ann Lane';
patient (1,2,1). billing = 28.50;
patient (1,2,1). test = [68 70 68; 118 118 119; 172 170 169];
patient (1,1,2). name = 'Al Smith';
patient (1,1,2). billing = 504.70;
patient (1,1,2). test = [80 80 80; 153 153 154; 181 190 182];
patient (1,2,2). name = 'Dora Jones';
patient (1,2,2). billing = 1173.90;
patient (1,2,2). test = [73 73 75; 103 103 102; 201 198 200];
Геометрично дану структуру можна відобразити наступним чином

Застосування функцій до багатовимірних масивів структур
Для застосування функцій до багатовимірних масивів структур. потрібно використовувати індекси-вання полів. Наприклад, знайдемо суму стовпців структури test у patient (1,1,2):
sum ((patient (1,1,2). test));
Аналогічно, підсумуємо всі поля billing в багатовимірному масиві patient:
total = sum ([patient.billing]);
ПРОГРАМУВАННЯ НА MATLAB-е
Програмування на мові MATLAB: Швидкий старт
М-файли мови MATLAB можуть бути або сценаріями (scripts), які просто виконують серію   операторів (виразів), або ж вони можуть бути функціями (functions), допускающі-ми також вхідні аргументи і вихідні змінні. Ви можете створити М-файли викорис-чаплі текстовий редактор і потім використовувати їх як будь-яку іншу функцію або команду системи MATLAB.
У найпростішому випадку процес виглядає так:
  1. Ви створюєте М-файл використовуючи текстовий редактор.
  2. Викликаєте М-файл з командного рядка або ж з іншого М-файлу.
Схематично це можна відобразити наступним чином:

Типи М-файлів
Як вказувалося вище, є два типи М-файлів, загальні властивості яких наведено в таблиці
М-сценарії
М-функції
  • Не допускають вхідних і вихідних змінних
  • Припускають вхідні і вихідні аргументи
  • Оперують у даними з робочої області
  • Внутрішні змінні за замовчуванням є локальними по відношенню до функцій
  • Призначені для автоматизації послідовності кроків, які потрібно виконувати багато разів
  • Призначені для розширення можливостей мови MATLAB (бібліотеки функцій, пакети прикладних програм)
Що таке М-файл?
У даному розділі ми розглянемо основні частини, з яких складається М-функція. Допус-тім, ми маємо наступну функцію fact, яка обчислює факторіал цілого числа:
                      function f = fact (n)% Рядок визначення функції
                     % FACT Factorial.% Перший рядок допомоги (H1 line)
% FACT (N) returns the factorial of N, H! % Текст допомоги (Help text)
% Usually denoted by N!
% Put simply, FACT (N) is PROD (1: N).
                     f = prod (1: n);% Тіло функції
Ця функція має деякі елементи, які є загальними для всіх функцій систе-ми MATLAB:
Рядок визначення функції. Цей рядок задає ім'я функції, а також число і порядок вхідних і вихідних аргументів.
Рядок H1 (H1 line). H1 позначає «перший рядок» допомоги. MATLAB виводить цю будів-ку в командне вікно, коли ви користуєтеся функцією lookfor або запитуєте допомогу по всій директорії.
Текст допомоги (Help text). MATLAB виводить у командне вікно даний текст разом з рядком H1, коли ви запитуєте допомогу по конкретній функції, тобто вводите help Імя_Функціі.
Тіло функції. Ця частина функції містить коди (команди), які виконують обчислений-ня і визначають значення всіх вихідних змінних.
Забезпечення допомоги для вашої програми
Ви можете забезпечити користувача інформацією (допомогою) про вашу програму, шляхом включення розділу тексту допомоги в початок М-файлу. Цей розділ починається з рядка, сле-дме безпосередньо за рядком логічних функції і закінчується на першій пус-тому рядку, або рядку тіла функції. Кожен рядок тексту (ці рядки пофарбовані в зелений колір) допомоги повинна починатися символом відсотка (%). MATLAB виводить у командне вікно даний текст кожен раз коли ви вводите
help Імя_Функціі
  Ви можете також написати текст допомоги для всієї директорії, шляхом створення файлу зі спеціальним ім'ям Contents. M, який знаходиться у вашій директорії. Цей файл повинен містити тільки рядки коментарів, тобто кожен рядок повинен починатися зі знака відсотка. MATLAB виводить на дисплей рядка файлу Contents. M щоразу, коли ви вводите в командне вікно рядок
help Імя_Діректоріі
Якщо дана директорія, файлу Contents. M, то при введенні help Імя_Діректоріі в командне вікно виводиться перший рядок допомоги (H1 line) для кожного файлу директорії.
Створення М-файлів: Використання текстових редакторів
М-файли являють собою звичайні текстові файли, які ви створюєте з вико-ристанням текстового редактора. MATLAB містить вбудований редактор, хоча в принципі мо-жно скористатися будь-яким іншим текстовим редактором.
Увага! Для виклику редактора потрібно в меню File вибрати New і потім M-File.
Інший спосіб виклику редагувати або М-файлу з командного рядка полягає у використанні фу-нкціі edit. For example, при введенні
edit foo
MATLAB відкриває вбудований текстовий редактор на файлі foo. M. Якщо не вказати імені файлу, то буде викликаний редактор з новим, неозаглавленним файлом. Ви можете створити фун-кцію fact, наведену вище, шляхом відкриття вашого текстового редактора, введення показаний-них рядків, і запам'ятовуванням тексту у файлі під назвою fact. m у вашій поточної директо-рії.
Після того як ви створили цей файл, його можна знайти в списку файлів вашої поточної директорії, для чого треба ввести команду
what
Можна також роздрукувати у командному вікні файл командою
type fact
Нарешті, ви можете вирахувати факторіал будь-якого цілого числа, наприклад, 5-й
                                                                        fact (5)
                                                                     ans =
                                                                                120
Увага! Зберігайте всі створені або змінені вами М-файли в директорії (ката-лозі), який не знаходиться в дереві каталогів MATLAB-а. Якщо ви збережете ваші М-файли в дереві каталогів MATLAB-а, вони можуть бути знищені при установці нової версії MATLAB-а.
Сценарії
Сценарії є найпростішим типом М-файлів, оскільки вони не мають вхідних або вихідних аргументів. Вони корисні для автоматизації послідовності команд, таких як звичайні обчислення, які доводиться часто виконувати в командному вікні. Сценарії працюють над існуючими даними в робочому просторі; ви також можете створювати нові дані за допомогою сценаріїв. Всі змінні, створені в результаті виконання сценаріїв, залишаються в робочому простанств MATLAB-а, так що ви можете використо-вувати їх для подальших обчислень.
Простий приклад сценарію
Наведені нижче вирази обчислюють функцію rho для декількох трігонометрічес-ких функцій кута theta, і будують серію графіків в полярній системі координат
% An M-file script to produce% Лінія коментарів
% "Flower petal" plots
                                    theta = - pi: 0.01: pi;% Обчислення
rho (1,:) = 2 * sin (5 * theta). # 2;
rho (2,:) = cos (10 * theta). # 3;
rho (3,:) = sin (theta). # 2;
rho (4,:) = 5 * cos (3.5 * theta). # 3;
for i = 1:4
                                              polar (theta, rho (i,:))% Висновок на графіки
                                             pause
                                    end
Спробуйте ввести ці команди в М-файл, названий petals. M. Цей файл є тепер сценарієм MATLAB-а. Введення команди petals (пелюстки) в командному рядку MATLAB-а призводить до виконання команд сценарію. Команда pause призупиняє виконання циклу до натискання будь-якої клавіші (наприклад, Return). Таким чином, після того як сценарій відображає один графік з чотирьох, натискання клавіші Return призводить до появи-нію наступного. Тут ми не маємо вхідних або вихідних змінних; сценарій petals створює необхідні йому змінні в основному робочому просторі MATLAB-а. Коли ви-конання сценарію завершено, всі створені змінні (i, theta, і rho) залишаються в робо-чим просторі. Ви можете переконатися в цьому, вводячи команду whos в командному рядку.
Функції
Функції є М-файли, які приймають вхідні аргументи і видають вихідні. Вони працюють над змінними у своєму власному робочому просторі, ко-лось не збігається з основним робочим простором, доступному з командного рядка MATLAB-а.
Простий приклад функції
Функція average є простим М-файлом, який обчислює середнє значення елементом тов вектора.
function y = average (x)
% AVERAGE Mean of vector elements.
% AVERAGE (X), where X is a vector, is the mean of vector elements.
% Non-vector input results in an error.
[M, n] = size (x);
if (~ ((m == 1) | (n == 1)) | (m == 1 & n == 1))
error ('Input must be a vector')
                          end
                          y = sum (x) / length (x);% Фактичні обчислення
При введенні НЕ векторної величини, дана функція видає повідомлення про помилку (більш точ-но, на дисплей виводиться фраза «Вхід повинен бути вектором»). Ви можете ввести ці ко-мих фахівців в М-файл, названий average. M. Функція average допускає єдиний вхід і повертає єдиний вихідний аргумент. Для звернення до даної функції, введіть
z = 1:99;
average (z)
що дасть наступний результат
                                                                   ans =
                                                                               50
Основні частини синтаксису М-функцій
Функції в загальному випадку складаються з наступного частин:
  • Рядок визначення функції (The Function Definition Line)
  • Рядок допомоги H1 (The H1 Line)
  • Текст допомоги (Help Text)
  • Тіло функції (The Function Body)
  • Коментарі (Comments)
Рядок визначення функції
Рядок визначення функції інформує систему MATLAB, що М-файл містить функ-цію, і задає послідовність вхідних і вихідних змінних. Для функції average ця рядків має наступний вигляд:

де input argument - вхідний аргумент;
function name - ім'я функції;
output argument - вихідний аргумент;
      keyword - зарезервоване слово;
Всі функції MATLAB-а мають лінію визначення функції, відповідну даній схемі. Якщо функції мають кілька вихідних змінних, потрібно укласти список цих змінних в квадратні дужки. Вхідні змінні, навіть якщо їх декілька, завжди полягають у звичайні дужки. Ось приклад більш складної функції
function [x, y, z] = sphere (theta, phi, rho)
Якщо функція не має вихідних змінних, залиште вихід порожнім, наприклад,
function printresults (x)
або використовуйте порожні квадратні дужки
function [] = printresults (x)
Змінні, які ви передаєте функції не обов'язково повинні мати те ж ім'я, що і в лінії визначення функції.
Рядок допомоги H1
Рядок H1, названа так тому що вона є першим рядком тексту допомоги (Help text), є лінією коментаря, яка слідує безпосередньо за рядком визначення фу-нкціі. Оскільки вона складається з тексту коментаря, рядок H1начінается з символу про-цента (%). Для функції average цей рядок має вигляд
% AVERAGE Mean of vector elements.
(Середнє значення Обчислення середнього значення векторів)
Цей рядок є першим рядком тексту, який з'являється при введенні користувачем в командному рядку команди
help function_name
  (Help ім'я _функціі)
Далі, функція lookfor здійснює пошук та виводить у командне вікно тільки рядок H1. Так як даний рядок забезпечує важливу узагальнюючу інформацію про М-файлі, дуже важливо зробити її якомога більш описовою.
Текст допомоги
Ви можете створити можливість оперативної допомоги (довідки) для вашої М-функції, пу-тем для однієї чи більшої кількості рядків коментарю, що починаються безпосередньо за рядком H1. Текст допомоги для функції average має вигляд
% AVERAGE (X), where X is a vector, is the mean of vector elements.
% Nonvector input results in an error.
(% СЕРЕДНЯ (Х), де Х є вектором, обчислює середнє значення
% Елементів вектора. Чи не векторний вхід призводить до помилки).
Коли ви вводите help function_ name, MATLAB виводить лінії коментарів, які на-ходяться між рядком визначення функції і першим рядком не коментарів (виконуємо-ється або порожній рядком). MATLAB ігнорує будь-які лінії коментарів, які появ-ляють за цим блоком тексту допомоги. Наприклад, надрукувавши help sin отримаємо
SIN Sine.
SIN (X) is the sine of the elements of X.
(SIN (X) є синусом елементів масиву Х)
Тіло функції
Тіло функції містить всі коди системи MATLAB, які здійснюють обчислення і визначають значення вихідних змінних. Вирази в тілі функції складаються з звернень-ний до інших функцій, програмних конструкцій типу команд циклів, введення і виведення, обчислень, операторів присвоєння, коментарів і порожніх рядків. Наприклад, тіло функ-
ції average містить декількох простих програмних висловів:
[M, n] = size (x);
if (~ ((m == 1) | (n == 1)) | (m == 1 & n == 1))% Flow control
error ('Input must be a vector')% Error message display
end
y = sum (x) / length (x);% Computation and assignment
Коментарі
Як було зазначено раніше, рядки коментарів починаються з символу відсотка (%). Рядки коментарів можуть бути в будь-якому місці М-файлу, а також ви можете додати комент-рії до кінця рядка кодів програми. Наприклад,
% Add up all the vector elements.
y = sum (x)% Use the sum function.
(% Підсумовування всіх елементів вектора.
                                       y = sum (x)% Використовуйте функцію sum)
     
Перший рядок коментарів, наступна безпосередньо за рядком визначення функції розглядається як рядок H1 даної функції. Рядок H1 і будь-які рядки коментарів, безпосередньо наступні за Н1, складають запис оперативної допомоги для даного файлу. На додаток до рядків коментарів, ви можете вводити пусті рядки в будь-якому місці М-файлу. Порожні рядки ігноруються. З іншого боку, порожній рядок може позначати кінець тексту допомоги.
Імена функцій
Імена функцій в MATLAB-е мають ті ж обмеження, що й імена змінних. MATLAB використовує перші 32 символу імені. Імена функцій повинні починатися з літери; осталь-ні знаки можуть бути будь-якою комбінацією букв, цифр і символів підкреслення. Некото-які операційні системи можуть вводити свої обмеження на довжину імен функцій.
Назва текстового файлу, який містить функцію MATLAB-а, складається з імені фун-кції з добавленни розширенням. M. Наприклад, average. M. Якщо ім'я файлу і ім'я функції в її рядку визначення відрізняються, то внутрішнє ім'я ігнорується.
Однак, незважаючи на те що ім'я функції, задане в її рядку визначення, не обов'язково має збігатися з ім'ям файлу, настаятельно рекомендується щоб ви використовували одне і те ж ім'я для файлу та функції.
Як працює функція
Ви можете викликати М-функцію як з командного рядка MATLAB-а, так і з іншого М-файлу. Переконайтеся, що ви включили всі необхідні аргументи, уклавши вхідні аргу-менти в звичайні дужки, а вихідні - в квадратні.
Визначення імені функції
Коли MATLAB стикається з новим ім'ям, він здійснює наступну послідовник-ність кроків:
  1. Перевіряє, чи не є ім'я змінної.
  2. Перевіряє, чи не є ім'я підпрограмою (subfunction), тобто функцією MATLAB-а, яка знаходиться в межах того ж М-файлу, що і яка спричиняється функ-ція.
  3. Перевіряє, чи не є ім'я приватної функцією (Private function), тобто функцією, яка знаходиться в спеціальній директорії під назвою Private (private directo-ry), тобто директорії доступною тільки для М-файлів в межах тієї ж директо-рії де вона сама перебуває.
  4. Перевіряє, чи знаходиться дана на шляху доступу MATLAB-а. MATLAB звертається до першого зустрінутому файлу з заданим ім'ям. Якщо ви дублюєте імена функ-цій, MATLAB звертається до першої зустрінутої на основe наведеної вище процедури або дурепи.
Що відбувається при виклику функцію
Коли ви викликаєте М-файл з командного рядка або ж з меж інший М-функції, MATLAB здійснює синтаксичний аналіз функції і перетворює її на псевдокод, ко-торий запам'ятовується в пам'яті. Це виключає необхідність повторного аналізу функції при кожному наступному її виклику в межах даного сеансу роботи. Псевдокод збе-ється в пам'яті до тих пір, поки ви не видалите його за допомогою команди clear, або поки ви не вийдете з MATLAB-а.
У наведеній нижче таблиці наведено основні варіанти застосування комнди clear для видалення будь-яких функцій з робочого простору MATLAB-а.
Синтаксис
Опис
clear function_name
Видаляє задану функцію з робочого простору
clear functions
Видаляє всі скомпільовані М-функції
clear all
Видаляє всі змінні і функції

Створення P-кодів файлів
Ви можете запам'ятати попередньо скомпільовані функції або сценарії, називає-ться псевдокоду (P-code) файлів, для використання їх у наступних сеансах роботи. Наприклад, команда
pcode average
компілює функцію average. m і запам'ятовує отриманий псевдокод у файлі званому average. p. Це дозволяє MATLAB-і виключити операцію компілювання при першому ви-зове функції в кожному сеансі роботи. У принципі, MATLAB здійснює компіляцію ве-сьма швидко, так що запам'ятовування функції у вигляді псевдокоду рідко дає великий виграш у швидкодії. Єдина ситуація де псевдокод дійсно дає відчутний ви-ігриш в часі, пов'язана із застосуванням складних графічних Інтерфейсів корис-теля (GUI) в різних додатках. У цьому випадку множина М-файлів повинні бути скомпільовано перш ніж GUI стане видимим. Інша ситуація, де використання пса-вдокода є виправданим, має місце при необхідності зберегти права влас-ності, тобто коли ви хочете виключити можливість застосування вашого алгоритму іншими особами.
Як MATLAB передає аргументи функції
З точки зору програміста створюється враження, чтоMATLAB передає функції все ар-гументи у вигляді їх значень. У дійсності, однак, MATLAB передає значення толь-ко тих аргументів, які змінюються цією функцією. Якщо функція не змінює відповід-ний аргумент, а просто використовує його при обчисленнях, MATLAB передає аргу-мент у вигляді посилання на нього (на його розташування в пам'яті) з метою оптимізації вико-вання пам'яті.
Робочі простори функцій
Кожна М-функція має в пам'яті свій робочий простір, окреме від основного робо-чого простору MATLAB-а, в якому вона працює. Це простір називається робо-чим простором функції, причому різні функції мають різні робочі простору.
При використанні MATLAB-а, ви маєте доступ тільки до тих змінним, які знахо-дяться в визивемом контексті, будь це основний робочий простір або робоче простий-ранство якоїсь функції. Змінні, які ви передаєте функції, повинні бути роз-покладені в просторі виклику, і, у свою чергу, функція повертає вихідні аргу-менти в той же самий робочий простір виклику. Ви можете, однак, визначити змін-ні як глобальні, що дає можливість доступу до них з різних робочих просторів.
Перевірка числа аргументів функції
Функції nargin і nargout дозволяють вам визначити число вхідних і вихідних аргумен-тів функції. Ви можете використовувати ці функції з умовними операторами для виконан-ня різних завдань залежно від кількості аргументів. Наприклад,
function c = testarg1 (a, b)
if (nargin == 1)
c = a. ^ 2;
elseif (nargin == 2)
c = a + b;
                                                         end
При одному вхідному аргументі, дана функція обчислює квадрат вхідної величини. Якщо задані два вхідних аргументу, функція здійснює їх складання.
Передача змінного числа аргументів
Функції varargin і varargout дають можливість передачі функції будь-якого змінного числа аргументів чи повертати змінне число вихідні аргументів. При використанні-ванні функци varargin MATLAB об'єднує всі задані вхідні аргументи на масив ніздрюватобетонних-ек. Якщо ви використовуєте функцію varargout, то ваша програма повинна забезпечити обсягів по-нання вихідних змінних в масив комірок, з тим щоб MATLAB мав можливість повернути їх в простір виклику. Нижче дан приклад функції, яка приймає будь-яке число двовимірних векторів, і наносить на графіку лінію, що з'єднує відповідні точки.
function testvar (varargin)
for i = 1: length (varargin)
x (i) = varargin {i} (1);
y (i) = varargin {i} (2);
end
xmin = min (0, min (x));
ymin = min (0, min (y));
axis ([xmin fix (max (x)) + 3 ymin fix (max (y)) + 3])
plot (x, y)
Функція testvar рабоает з різним числом вхідних змінних; наприклад, ви можете ввести два різних набору даних
                                        testvar ([2 3], [1 5], [4 8], [6 5], [4 2], [2 3])
                                        testvar ([-1 0], [3 -5], [4 2], [1 1])
Розпакування вмісту функції varargin
Оскільки функція varargin містить всі вхідні аргументи у вигляді масиву клітинок, для з-потягу даних необхідно використовувати відповідну індексацію. Наприклад,
y (i) = varargin {i} (2);
Індексація осередків має два набори компонент - перший набір вказує клітинку і ув'язнений у фігурні дужки, а другий набір відноситься до осередки і ув'язнений у звичайні дужки. У наведеному вище операторі вираз {i} позначає звернення до i-ої комірці в varargin, а вираз (2) представляє другий елемент вміст вибраної комірки.
Упаковка вихідних змінних у функцію varargout
Коли ви хочете використовувати довільне число вихідних аргументів, ви повинні передбачатися-дивитися процедуру упаковки вихідних змінних в масив комірок varargout. При цьому, для визначення конкретного числа викликаються вихідних аргументів використовуйте функ-цію nargout. Наприклад, наведений нижче приклад приймає вхідний масив у вигляді двох стовпців, де перший стовпець характеризує набір даних по осі x, а другий стовпець - відповід-ний набір даних по осі y. Дані набори розбиваються на окремі пари вік-торів [xi yi], які ви можете передати описаної вище функції testvar.
function [varargout] = testvar2 (arrayin)
for i = 1: nargout
varargout {i} = arrayin (i,:)
end
Оператор присвоювання в циклі for використовує синтаксис індексації масивів комірок. Ось приклад застосування функції testvar2:
a = {1 2, 3 4; 5 червня, 7 8; 9 0};
[P1, p2, p3, p4, p5] = testvar2 (a);
Місце функцій varargin і varargout в списку аргументів
Функції varargin або varargout повинні бути останніми у списку аргументів, при цьому вони можуть бути розташовані після будь-якого числа вхідних або вихідних змінних. Це означає, що в рядку визначення функції слід спершу вказати необхідні вхідні або вихідні аргументи. Наприклад, наступні рядки визначення функцій показують правильне застосування varargin і varargout.
function [out1, out2] = example1 (a, b, varargin)
                                  function [i, j, varargout] = example2 (x1, y1, x2, y 2, flag)
Локальні і глобальні змінні
Кожна виконувана функція MATLAB-а, певна деяким М-файлом, має свої власні локальні змінні розташовані у своєму робочому просторі, які відділені від локальних змінних інших функцій і змінних в основному робочому про-просторі. Однак, якщо кілька функцій і, можливо, основний робочий простір, оголошують деяку конкретну змінну глобальної, то всі ці функції і основний робочий простір будуть мати доступ до даної змінної. Будь-яка зміна глобального ної змінної, вироблене в просторі якої-небудь однієї функції, негайно сприймається усіма іншими функціями, де ця змінна оголошена глобальною. Припустимо, ви хочете вивчити ефект зміни коефіцієнтів взаємозв'язків a і    b, в диф-диференціальних рівнянні Лотки-Вольтера (Lotka-Volterra), відомого як модель хижака-жертви.
dy 1 / dt = y 1 - a y 1 y 2
dy 2 / dt = y 2 - b y 1 y 2

Створимо М-файл lotka. M.
                                                function yp = lotka (t, y)
global ALPHA BETA
yp = [y (1) - ALPHA * y (1) * y (2);-y (2) + BETA * y (1) * y (2)];
Потім введемо послідовно в командне вікно такі вирази
global ALPHA BETA
ALPHA = 0.01
BETA = 0.02
[T, y] = ode23 ('lotka', 0,10, [1; 1]);
plot (t, y)
Оголошення змінних ALPHA і BETA глобальними у командному рядку дозволяє ме-няти відповідні значення всередині функції заданої файлом lotka. M. Інтерактивне зміна даних змінних в командному вікні призводить до отримання нових рішень без будь-яких редагувань тексту файлу.
Для роботи у ваших додатках з глобальними змінними слід:
q Оголосити відповідну змінну глобальної в кожної функції, де пре-бачені її використання. Для забезпечення доступу до глобальної змінної з командного вікна потрібно оголосити дану змінну глобальної також і в командному рядку.
q У кожної функції оголосіть змінну глобальної до першої появи її імені в тексті файлу. Зазвичай рекомендується оголошувати змінні глобальними на початку М-файлу.
Глобальні змінні в MATLAB-е зазвичай має довші імена і іноді запису-ються заголовними буквамі.Ето не є настійною вимогою, але спрощує чте-ня файлів і зменшує ризик випадкової зміни глобальної змінної.
Перманентні змінні (Persistent Variables)
Змінна може бути оголошена перманентної (постійної) - при цьому вона не змінює свого значення між її послідовними викликами. Перманентні змінні можуть бути використані тільки в межах певної функції. Ці змінні залишаються в пам'яті до видалення М-файлу з пам'яті або його зміни. У багатьох відносинах перма-нентний змінні аналогічні глобальним, за тим винятком, що їх ім'я не знаходиться в глобальному робочому просторі, а їх значення скидається при зміні М-файлу або видалення з пам'яті.
Для роботи з перманентними змінними в MATLAB-е передбачені три функції:
Функція
Опис
mlock
Виключає можливість видалення М-файлу з пам'яті
munlock
Повертає М-файлу можливість його видалення з пам'яті
mislocked
Вказує, чи може М-файл бути видалений з пам'яті
Спеціальні змінні
Кілька функцій повертають важливі спеціальні значення, які ви можете використо-вувати у ваших М-файлах.
Функція
Значення, що повертається
ans
Остання відповідь (змінна). Якщо ви не привласнюєте вихідний змінної або обчислюваному висловом будь-яке ім'я, MATLAB автоматично запам'ятовує результат у змінній ans.
eps
Відносна точність обчислень з плаваючою комою. Це допуск, який MATLAB використовує при обчисленнях.
realmax
Найбільше число з плаваючою комою.
realmin
Найменше число з плаваючою комою.
pi
3.1415926535897 ...
i, j
Уявна одиниця.
inf
Нескінченність. Обчислення виду n / 0 де n - будь-яке ненульове реальне число, дає в результаті inf.
NaN
Чи не чисельне значення (Not-a-Number). Вирази вигляду 0 / 0 і
inf / inf дають в результаті NaN, так само як і арифметичні операції містять NaN. Вирази типу   n / 0, де n є-ється комплексним числом, також повертають NaN.
computer
Тип комп'ютера.
version
Рядок, що містить версію MATLAB-а.
Ось кілька прикладів, де використовуються ці змінні.
                                                                       x = 2 * pi;
A = [3 + 2i 7 - 8i];
                                                                       tol = 3 * eps;
Типи даних
Всього в MATLAB-е є 14 базових типів (або класів) даних. Кожен з цих типів даних є формою масиву. Цей масив може мати мінімальний розмір 0х0 і мо-жет мати довільну розмірність по будь-якій координаті. Двовимірні варіанти таких масивів називаються матрицями. Всі 14 базових класу типів даних показані на приве-денной нижче діаграмі. Додатково, тип даних, визначених користувачем, поки-занний нижче як user class (клас користувача), є підмножиною даних типу структури.

Тип даних char містить символи дані в коді Unicode. Рядок символів є про-сто масивом символів розміру 1хn. array of characters. Ви можете використовувати тип даних char для зберігання масивів рядків, за умови, що всі рядки масиву мають однакову довжину (це є наслідком того, що всі масиви MATLAB-а повинні бути прямокутні-ними). Для зберігання масиву рядків різної довжини потрібно використовувати масив осередків.
Числові типи даних включають цілі числа зі знаком і без знаку, числа у форматі пла-вающей комою одинарної і подвійної точності, і розріджені масиви (sparse arrays) подвійної точності.
Сказане нижче зберігається в силі для всіх типів числових даних в MATLAB-е:
q Всі обчислення в MATLAB-е виконуються з подвійною точністю.
q Цілі числа і числа одинарної точності забезпечують більш ефективне використання пам'яті в порівнянні з числами подвійної точності.
q Всі типи даних підтримують базові операції над масивами, такі як використання тання індексів і вимірювання розмірів масиву.
q Для виконання математичних операцій над цілими числами або масивами з оди-одинарної точністю подання, ви повинні первратіть їх в масиви з подвійною точністю за допомогою функції double.
Оператори
Оператори системи MATLAB діляться на три категорії:
q Арифметичні опреатора, здійснюють чисельні обчислення.
q Операції відносини, які здійснюють чисельне порівняння операндів.
q Логічні оператори, що включають AND (логічне І), OR (логічне АБО), NOT (логічне заперечення НЕ).
Аріфметческіе оператори
MATLAB забезпечує такі арифметичні оператори
Оператори
Опис
+
Додавання
-
Віднімання
.*
Множення
. /
Праве ділення
. \
Ліве поділ
+
Унарний плюс (зміна знаку об'єкта)
-
Унарний мінус
:
Оператор двокрапки
. ^
Ступінь
. '
Транспонування
'
Комплексно-поєднане транспонування
*
Матричне умнженіе
/
Матричне праве ділення
\
Матричне ліве поділ
^
Ступінь матриці
Арифметичні оператори та масиви
За винятком деяких матричних операторів, арифметичні оператори MATLAB-а працюють з відповідними елементами масивів однакової розмірності. Для векторів і прямокутних масивів, обидва операнди повинні мати однаковий розмір, або ж один з них повинен бути скаляром. Якщо один операнд є скаляром, а другий - ні, MATLAB застосовує цей скаляр до всіх елементів другого операнда; дане властивість відома як скалярний розширення (scalar expansion).
Наступний приклад ілюструє властивість скалярного розширення при обчисленні вироб-ведення скалярного опренда і матриці
A = magic (3)
                                                           A =
                                                                        8 1 6
                                                                        3 5 7
                                                                        4 9 2
Введемо
3 * A
що дає
ans =
                                                                        24 березня 1918
                                                                         15 вересня 1921
                                                                       12 27 6
Оператори відносини
MATLAB забезпечує наступні оператори відносини
Оператори
Опис
<
Менше ніж
<=
Менше ніж або дорівнює
>
Більше ніж
> =
Більше ніж або дорівнює
==
Так само
~ =
Не дорівнює
Оператори відносини і масиви
Оператори відносини в MATLAB-е порівнюють відповідні елементи двох масивів з однаковими просторами. Ці оператори завжди діють поелементно. У приведений-ном нижче прикладі, результуюча матриця показує, де елемент матриці A дорівнює з-Відповідаю елементу матриці B.
A = [2 7 червня; 9 0 5; 3 0.5 6];
B = [8 7 0; 3 2 5; 4 -1 7];
A == B
ans =
0 1 0
0 0 1
                                                                      0 0 0
Для векторів і прямокутних масивів, обидва операнди повинні мати однаковий розмір або один з них повинен бути скаляром. У разі коли один операнд є скаляром, а другий - ні, MATLAB перевіряє даний скаляр з кожним елементом іншого операнда. Ті положення, де задане ставлення є істинним, приймають значення 1. Положення, де ставлення є помилковим, приймають значення 0.
Оператори відносини і порожні масиви
Оператори відносини працюють і з масивами, у яких будь-яка розмірність дорівнює ну-лю (що призводить до порожнього масиву), якщо обидва масиви мають однаковий розмір або ж один з них є скаляром. Однак, вирази виду
A == []
приводять до помилки, якщо тільки масив А не має розміри 0х0 або 1х1. Для перевірки є-ється чи даний масив порожнім, слід використовувати спеціальну функцію isempty (A).
Логічні оператори
MATLAB забезпечує наступні логічні оператори
Оператор
Опис
&
AND (логічне І)
|
OR (логічне АБО)
~
NOT (логічне НЕ)
Увага! На додаток до цих логічним операторам, у директорії ops є ніс-колько функцій, призначених для побітових (порозрядних) логічних операцій.
Кожний логічний оператор має специфічний набір правил, які визначають різу-льтат логічного виразу:
q Вирази використовують оператор І (&), істинні, якщо істинні обидва операнда. При чисельних елементах, вираз є істинним, якщо обидва операнди ненульові. Наступний приклад показує операцію логічного І для двох векторів
u = [1 0 2 3 0 5];
v = [5 6 1 0 0 7];
                                           
u & v
                                          ans =
0 0 1 0 0 1
q Вирази, використовують оператор АБО (|), є щирими якщо один з операндів є істинним. Вирази з АБО є помилковими тільки якщо ло-жнимі є обидва операнда. При чисельних елементах, вираз є лож-ним, якщо протягом п'яти років тільки обидва операнда дорівнюють нулю. Для наведених вище векторів u і v маємо
                                                  
u | v
ans =
1 1 1 1 0 1
q Вирази, використовують оператор ~ виконують логічне заперечення. Це дає помилковий результат, якщо операнд є істинним і правдивий, якщо операнд є-ється хибним. При чисельних елементах, будь ненульовий операнд стає нульовим-им (логічним нулем), а будь-який нульовий елемент стає рівним (логічної) одиниці. Розглянь операцію логічного заперечення вектора u
                                             ~ U
ans =
0 1 0 0 1 0
Використанням логічних операторів з масивами
Логічні оператори MATLAB-а порівнюють відповідні елементи масивів одина-кової размернсті. Для векторів або прямокутних масивів, обидва операнди повинні мати однаковий розмір, або один з них повинен бути скаляром. Якщо один з елементів являе-ться скаляром, а другий - ні, то тут також має місце описане вище властивість скалярно-го розширення.
Логічні функції
На додаток до логічних операторам, MATLAB має ряд логічних функцій.
Функція
Опис
Приклади
xor
Виконує операцію виключає АБО над своїми операндами. При числових елементах, функція повертає 1 якщо один з операндів ненульовий, а другий - нульовий
a = 1; b = 1;
xor (a, b)
ans =
0
all
Повертає 1, якщо всі елементи її аргументу є істинними або не рівні нулю, інакше результат дорівнює логічному нулю. Над матрицями функція all працює вздовж стовпців
A = [0 1 2, 3 5 0]
  A =
            0 1 2
            3 5 0
all (A)
ans =
0 1 0
any
Повертає одиницю, якщо будь-який з аргументів є істинним чи ненульовим; в іншому випадку вовращает 0. Як і all, any працює вздовж стовпців матриць.
v = [5 0 8];
any (v)
   ans =
1
Ряд інших функцій MATLAB-а виконує логічні операції. Наприклад, функція isnan повертає 1 для NaN; функція isinf повертає 1 для Inf. Більш докладний список можна знайти в директорії ops.
Логічні вирази використовують функцію find
Функція find визначає індекси числового масиву, що задовольняють заданому логічес-кому умові. Ця функція зручна для створення логічних масок (шаблонів) і матриць ін-декс. У найбільш загальній формі, функція   find повертає єдиний вектор індексів. Цей вектор може бути використаний для індексації масивів будь-якого розміру або форми. Наприклад, у наведеному нижче прикладі функція find дозволяє легко замінити всі елементом ти матриці А більше 8 на число 100:
A = magic (4)
A =
                                                                  16 2 3 13
                                                                   5    11 10 8
                                                                    9 7 6 12
                                                                   4 14 15 1
i = find (A> 8);
A (i) = 100
A =
100 2 3 100
5 100 100 8
100 7 6 100
4 100 100 1
Ви можете також використовувати функцію find для отримання обох індексів рядків і стіл-бцов прямокутних матриць, що задовольняють заданому логічному умові (більше під-робно ця функція описана в довідниках).
Пріоритети операторів
Ви можете будувати висловлювання, що використовують будь-яку комбінацію арифметичних і логи-чеських операторів, а також операторів відносини. Рівні пріоритетів цих операторів визначають порядок, в якому MATLAB обробляє вираз. У межах кожного рівня пріоритету, оператори мають однаковий пріоритет і оцінюються (обробляючи-ються) зліва направо. Послідовність пріоритетів для операторів MATLAB-а приве-ку нижче, впорядковані в порядку убування пріоритетів, тобто від вищого пріоритету до нижчого.
  1. Звичайні дужки ().
  1. Транспонування (. '), Ступінь (. ^), Комплексно-поєднане транспонування ('), ступінь матриці (^).
  1. Унарний плюс (+), унарний мінус (-), логічне заперечення (~).
  1. Множення (.*), праве ділення (./), ліве поділ (. \), Матричне множення (*), матричне праве ділення (/), матричне ліве поділ (\).
  1. Додавання (+), віднімання (-).
  1. Оператор двокрапки (:).
  1. Менше ніж (<), менше ніж або дорівнює (<=), більше ніж (>), більше ніж або дорівнює (>=), одно (==), не дорівнює (~=).
  1. Логічне І (&).
  1. Логічне АБО (|).
Зміна пріоритетів операторів
Наявна послідовність пріоритетів може бути змінена шляхом використання звичайних дужок, як це показано в наступному прикладі.
A = [3 вересня 5];
B = [2 1 5];
C = A. / B. ^ 2
C =
0.7500 9.0000 0.2000
C = (A. / B). ^ 2
                                                 C =
2.2500 81.0000 1.0000
Вирази можуть також містити змінні, задані за допомогою індексів
b = sqrt (A (2)) + 2 * B (1)
                                                                      b =
7
Команди управління даними (Flow Control)
У MATLAB-е є 8 базових команд для управління потоками даних:
• if, спільно з else і   elseif, здійснює обробку групи виразів, грунтуючись на
деякому логічному умови.
• switch, спільно з case і otherwise, обробляє різні групи виразів, основи-
ваясь на значенні деякого логічного умови.
• while здійснює обробки групи виразів невизначене число раз, грунтуючись
на деякому логічному умови.
• for здійснює обробку групи виразів певне (заданий) число разів.
• continue передає управління до наступної ітерації в циклах for або while, пропускаючи
всі залишилися вираження в тілі циклу.
• break припиняє обробку виразів і виходить з циклів, створених командами for
  або   while.
• try ... catch змінює послідовність виконання команд, якщо під час виконання
програми отримано повідомлення про помилку.
return призводить до припинення виконання даної програми і до повернення в викликаю-
щую функцію.
Всі конструкції програм, засновані на логічних умовах, використовують команду end для вказівки кінця відповідного блоку.
Увага! У багатьох випадках ви можете прискорити виконання програм MATLAB-а, шляхом заміни циклів з ​​командами for і while векторними виразами (див. нижче).
Команди if, else, and elseif
Команда if оцінює логічне вираження і обробляє групу операторів, засновуючи-чись ​​на значенні зазначеного вирази. Свого найпростішої формі синтаксис команди має вигляд
if (логічне вираз) logical_exdivssion
оператори
                                          end
Якщо логічне вираз істинний, тобто дорівнює 1, MATLAB виконує всі оператори між рядками, що містять команди if і end. Після цього він продовжує виконувати ко-мих фахівців. що знаходяться за рядком з end. Якщо логічний вираз помилково, тобто дає логи-ний 0, MATLAB перескакує через всі вирази між рядками з if і end, і про-должает свою роботу з рядка, наступної за командою end. Наприклад,
if rem (a, 2) == 0
disp ('a is even')
                                                    b = a / 2;
                                               end
Даний блок перевіряє, чи є вхідний аргумент парним числом і, якщо так, то виводить у комндную рядок відповідне повідомлення і ділити число а навпіл. В іншому випадку, даний блок не виконується. Між рядками з if і end ви можете включити вироб-вільне число операторів, що містять, у свою чергу, будь-які команди і цикли. Якщо ло-ня вираз призводить до нескалярной величиною, то для виконання блоку все елементом ти аргументу повинні буть ненульовими. Наприклад, припустимо X є матрицею. Тоді вираз
                                                       if X
оператори
                                                       end
еквівалентно наступного
if all (X (:))
оператори
                                                      end
При використанні з if, команди   else і elseif дають такі додаткові можливо-сті створення програм:
Команда else не має логічного умови. Оператори, що пов'язані з цією командою ви-
виконуються, якщо попереднє умова команди if (і, можливо, elseif) є лож-
вим.
Команда elseif має логічне умова, яке оцінюється, якщо попереднє ус-
ловие команди if (і, можливо, elseif), є хибним. Якщо логічне умова даної
команди elseif є істинним, то виконуються відповідні оператори, наступ-
щие за даною командою. Ви можете мати довільне число команд elseif в межах
одного блоку з if.
                                       if n <0% Якщо n негативно, дати повідомлення про помилку
disp ('Input must be positive');
                                        elseif rem (n, 2) == 0% Якщо n позитивно і парне, розділити на 2.
                                             A = n / 2;
else
                                              A = (n +1) / 2;% Якщо n позитивно і непарній, додати 1 і
% Розділити на два.
                                       end
Команда if і порожні масиви
Якщо логічне умова, пов'язане з if, призводить до нульового масиву, то воно оцінюється як помилкове. Наприклад, якщо А є порожнім масивом, то наступний блок
                                                               if A
S1
else
                                                                   S0
                                                                end
виконує оператор S0.
Команда switch
Команда switch здійснює обробку певних операторів, виходячи із значення пере-менной або виразу. Її базова форма має вигляд
                      switch вираз (скаляр або рядок символів)
case значення 1
оператори% Виконуються якщо вираз ==   значення 1
                      case значення 2
оператори% Виконуються якщо вираз ==   значення 2
.
.
.
                       otherwise
оператори% Виконуються якщо вираз не відповідає не одному
% Значенням, пов'язаному з командами case
                       end
Даний блок складається з:
Слова switch за яким слід вираз яке потрібно оцінити ..
Будь-якого числа блоків з командами case. Ці блоки складаються з слова case, за яким на тому ж рядку слід можливе значення виразу за словом switch. Наступні рядки містять оператори, які необхідно виконати при вказаному значенні виразу в першому рядку за словом switch. Ці рядки можуть бути будь-якими допустимими виразом-ями, включаючи інші цикли switch. Виконання групи операторів, пов'язаних з даною ко-командою case припиняється, коли MATLAB зустрічає таку команду case або слово
otherwise. Відзначимо, що завжди виконується тільки перший підходящий блок з case.
Не обов'язкової групи операторів, що починаються словом otherwise; ця група обро-розробляються, якщо значення виразу не було перехоплено яких-небудь попереднім бло-ком з case. Обробка групи операторів за словом otherwise припиняється на команді end.
Заключною команди end.
Блок з командою switch працює шляхом порівняння вхідного вираження, котре може бути чисельним скаляром або рядком символів, з кожним значенням ключів case. У разі чис-ленних виразів виконується якої-небудь (перший) блок, якщо справедливо логічне ра-венство значення == вираз. При виражених у вигляді рядка символів, блок виконува-ється, якщо істинно вираз strcmp (значення, вираз) (команда strcmp здійснює логічне порівняння рядків символів) .
Наведений нижче код дає простий приклад використання команди switch. Він перевіряє змінну input_ num і порівнює її з заданими числами. Якщо значення input_ num рівні -1, 0, або 1, команди case виробляють висновок значень на екран у вигляді тексту. Якщо змінна input_ num не дорівнює не одному з цих значень, виконання переходить до рядка otherwise і програма виводить на екран текст 'other value' («інше значення»).
switch input_num
case -1
disp ('negative one');
case 0
                                                                 disp ('zero');
case 1
disp ('positive one');
otherwise
disp ('other value');
end
Увага! На відміну від відповідних операторів мови C, оператор switch в MATLAB-е «доходить» тільки до першого оператора case, який задовольняє заданому вхідному висловом; інші оператори case при цьому не перевіряються.
Команда switch дозволяє оперувати з кількома умовами при одному операторі case, шляхом укладання даних умов у фігурні дужки, тобто при їх запису у вигляді масиву осередків. Відповідний приклад наводиться нижче
switch var
case 1
disp ("1")
case {2,3,4}
disp ('2 or 3 or 4 ')
case 5
                                                                disp ('5 ')
otherwise
disp ('something else')
end
Команда while
Цикли з командою while обробляють оператор або групу операторів, що знаходяться в тілі циклу, до тих пір, поки істинно перевіряється логічне умова при даній команді. Іншими словами, оператори всередині циклу можуть виполнться будь невизначений заздалегідь число разів. Її синтаксис у загальному випадку має вигляд
                                                                while exdivssion
                                                                    statements
end
Якщо логічний вираз exdivssion має матричний вигляд, то для продовження виконан-ня циклу всі його елементи повинні бути істинними, тобто рівні логічної одиниці. Щоб привести матричне умова до скалярного, слід скористатися функціями all і any. Наприклад, наступний цикл знаходить перше ціле число n, для якого факторіал n! є 100-значним числом
n = 1;
while prod (1: n) <1e100
n = n + 1;
end
Для виходу з петлі while в будь-який момент потрібно застосувати в тілі циклу команду break. При цьому, природно, слід сформувати відповідне логічне умова виходу з циклу.
Команда while і порожні масиви
Якщо умова при while зводиться до порожнього масиву, то воно відповідає брехливому висловлю-ня, тобто послідовність команд
while A
   S1;
                                                                         end
ніколи не виконає оператор S1 якщо   A є порожній масив.
Команда for
Цикл з командою for обробляє оператор або групу опреатора заздалегідь задане число разів. Її синтаксис має вигляд
for index = start: increment: end
                                                            statements
                                                       end
де index - є змінним цілочисловим індексом з початковим і кінцевим значен-нями   start і end і збільшенням increment. Типово, приріст дорівнює 1, але ви мо-жете задати будь-яке збільшення, включаючи і негативне. При позитивних індексах, виконання припиняється коли значення індексу перевищує кінцеве значення end; при негативних збільшеннях виконання припиняється коли індекс стає менше кінцевого значення.
Наприклад, наступний цикл виконується п'ять разів.
for i = 2:6
x (i) = 2 * x (i-1);
                                                       end
Ви можете використовувати вкладені цикли з комндой for:
for i = 1: m
for j = 1: n
A (i, j) = 1 / (i + j - 1);
end
end
Увага! Ви можете часто прискорити виконання кодів в MATLAB-е шляхом заміни циклів з ​​for і while векторизованное кодами (див. нижче).
Використання як індексів масивів
Індекси команди for можуть бути масивом значень. Наприклад, розглянемо масив А раз-мера m х n. Вираз
                                                        for i = A
                                                               statements
                                                        end
прирівнює індекс I вектору A (:, k). При першій ітерації значення k дорівнює 1; при другій ітерації k дорівнює 2, і так до тих пір, поки k не стає рівним n. Іншими словами, цикл повторюється n раз, де n є число стовпців в A. При цьому, при кожній ітерації індекс i є Вектра, що містить один з стовпців матриці A.
Команда continue
Команда continue передає управління наступній ітерації в циклах for або while, що призводить до перескакування через всі залишилися оператори в тілі циклу. У випадку вкладений-них циклів, команда continue передає управління до наступної ітерації зовнішніх по відно-шенню до даного циклу команд for або while, тобто пропускаються тільки що залишилися опе-ратор даного внутрішнього циклу. Для застосування цієї команди потрібно сформувати відповідне логічне умова.
Команда break
Команда break припиняє виконання циклів, утворених командами for або while. Ко-ли в тілі циклу зустрічається дана команда, подальше виконання відбувається починаючи з наступного рядка поза даного циклу. У вкладених циклах, команда break призводить до виходу тільки з внутрішнього циклу.
Команди try ... catch
Загальна форма послідовності команд try ... catch має вигляд
try
statement,
...,
statement,
catch,
statement,
...,
statement,
                                                                     end
У даній послідовності виконуються оператори між командами try і catch до тих пір, поки не станься яка-небудь помилка обчислень. Тоді управління передається («пе-рехвативается») послідовності операторів між командами catch і end. Для того щоб дізнатися причину, що призвела до помилки, можна скористатися комндой lasterr (пос-Ледней помилка). Якщо помилка трапляється між командами catch і end, то MATLAB прек-ращает обчислення, якщо тільки між попередніми командами catch і end не встановлено-на інша послідовність команд try ... catch.
Команда return
Команда return припиняє виконання поточної последвательності команд і повертає управління в зухвалу функцію (тобто «батьківську» функцію, з якої була викликана поточна функція) або ж повертає управління до клавіатури. Команда return так-таки приводить до закінчення режиму keyboard (остання команда, коли зустрічається в тілі програми, передає управління клавіатурі; вона часто використовується при налагодженні програм-ми). За звичайних умов роботи викликана функція передає управління у викликаю-щую функцію коли перша виконана повністю, тобто до кінця. Команда return може бути включена в тіло викликається функції для того щоб припинити її виконання при виконанні певних умов.
Підфункції
М-функції можуть містити коди більш ніж однієї функції. Перша функція у файлі являе-ться головною функцією (primary function), яка має ім'я самого М-файлу. Додаткових-ні функції в межах даного файлу є підфункції (subfunctions), які «ві-дни» (тобто можуть бути викликані) тільки для головної функції або інших підфункцій то-го ж файлу. Кожна подфункция починається зі своєї лінії визначення. Всі підфункції йдуть безпосередньо один за одним. Порядок проходження різних підфункцій не має ніякого значення, при цьому головна функція повинна бути обов'язково записана пер-виття. Наприклад,
             function [avg, med] = newstats (u)% Головна функція
            % NEWSTATS Знаходить середнє значення і медіану за допомогою внутрішніх
% Підфункцій.
             n = length (u);
             avg = mean (u, n);
             med = median (u, n);
             function a = mean (v, n)% подфункция
             % Знаходить середнє значення.
             a = sum (v) / n;
            function m = median (v, n)% подфункция
            % Знаходить медіану.
             w = sort (v);
             if rem (n, 2) == 1
                   m = w ((n +1) / 2);
             else
                   m = (w (n / 2) + w (n / 2 +1)) / 2;
             end
Підфункції mean і median обчислюють середнє значення і медіану вхідних даних. Глав-ва функція newstats знаходить довжину вхідного вектора даних і викликає підфункції, пе-редавая їм дані довжини n. Функції в межах одного і того ж файлу не мають загального доступу до яких-небудь змінним, якщо тільки ви не оголосіть ці змінні глобальними або ж не передасте їх у вигляді аргументів на відповідні підфункції, як це реалізовано в наведеному вище прикладі. Крім того, всі засоби допомоги («help») име-ют доступ тільки до головної функції в М-файлі. Коли ви викликаєте яку-небудь функцію з М-файлу, MATLAB насамперед перевіряє, чи не є ця функція підфункції-ей. Потім перевіряється, чи не є ця функція приватної функцією (private function), описаної в наступному розділі, і далі шукаються стандартні М-файли на шляхах доступу
MATLAB. Оскільки підфункції перевіряються першими, ви можете «придушити» виклик лю-якого існуючого М-файлу шляхом застосування підфункцій з тим же ім'ям, як, напри-заходів, ми мали на прикладі з функцією mean. Разом з тим, в межах одного М-файлу всі підфункції повинні мати різні індивідуальні імена.
Приватні функції
Приватні функції є функціями, які знаходяться в підкаталозі зі спеціальним ім'ям private (приватний). Вони видно, тобто можуть бути викликані, тільки з функцій у пре-справах батьківського каталогу. Наприклад, припустимо, що каталог newmath знаходиться на пу-тях доступу MATLAB-а. Підкаталог в даній директорії newmath, названий private, з-тримає тільки функції, які можуть бути викликані з каталогу newmath. Оскільки ча-стние функції є невидимими поза межами батьківського каталогу, вони можуть використо-користувати імена, що збігаються з іменами функцій в інших каталогах. Це властивість буває-ет корисним, якщо ви хочете створити свою версію будь-якої конкретної функції, зберігаючи в той же час оригінальну функцію в іншому каталозі. Так як MATLAB шукає серед част-них функцій перш ніж перейти до пошуку в інших каталогах, він завжди знайде приватну функцію, наприклад з ім'ям test.m, раніше ніж будь-яку іншу М-функцію, названу тим же ім'ям test.m, але розташовану в інших каталогах. Ви можете створювати свої приватні директорії просто шляхом створення стандартних підкаталогів, названих private. При цьому не слід поміщати директорії private на ваших шляхах доступу.
Додаток 1. Тематичні напрямки системи MATLAB
  1. matlab \ general - Команди загального призначення
  2. matlab \ ops - Оператори та спеціальні символи
  3. matlab \ lang - Конструкції мови і функції налагодження
  4. matlab \ elmat - Елементарні матриці та операції на ними
  5. matlab \ elfun - Елементарні математичні функції
  6. matlab \ specfun - Спеціальні математичні функції
  7. matlab \ matfun - Матричні функції і лінійна алгебра
  8. matlab \ datafun - Аналіз даних і перетворення Фур'є
  9. matlab \ audio - Підтримка звукових сигналів
  10. matlab \ polyfun - Поліноми та інтерполяція
  11. matlab \ funfun - Нелінійні чисельні методи і решатели звичайних
                                        диференціальних рівнянь (ODE solvers)
  1. matlab \ sparfun - Розріджені матриці
  2. matlab \ graph2d - Двовимірна графіка
  3. matlab \ graph3d - Тривимірна графіка
  4. matlab \ specgraph - Спеціальна графіка
  5. matlab \ graphics - дескрипторний графіка (Handle Graphics)
  6. matlab \ uitools - Інструменти графічного інтерфейсу користувача
                                         (Graphical User Interface (GUI))
  1. matlab \ strfun - Функції обробки символьних рядків
  2. matlab \ iofun - Функції вводу / виводу
  3. matlab \ timefun - Функції часу і дати
  4. matlab \ datatypes - Типи даних і структури
  5. matlab \ verctrl - Вибір версії
  6. matlab \ winfun - Інтерфейс з операційною системою Windows (DDE / ActiveX)
  7. matlab \ demos - Демонстрації і приклади можливостей системи MATLAB
  8. toolbox \ local - Вибір характеристик (Preferences)
  9. simulink \ simulink - Система моделювання Simulink
  10. simulink \ blocks - Бібліотека блоків (моделей) Simulink
  11. simulink \ simdemos - Демонстрація та приклади системи Simulink 4
  12. simdemos \ aerospace - Simulink: Демонстрація та приклади космічних моделей
  13. simdemos \ automotive - Simulink: Демонстрація моделей САУ
  14. simdemos \ simfeatures - Simulink: Демонстрація основних властивостей
  15. simdemos \ simgeneral - Simulink: Демонстрація прикладів загальних моделей
  16. simdemos \ simnew - Simulink: Демонстрація нових властивостей
  17. simulink \ dee - Редактор диференціальних рівнянь
  18. stateflow \ stateflow - Система моделювання подій Stateflow
  19. stateflow \ sfdemos - Демонстрації можливостей і приклади Stateflow
  20. stateflow \ coder - Кодуючий пристрій системи Stateflow
  21. rtw \ rtw - Моделювання систем реального часу Real-Time Workshop
  22. rtw \ rtwdemos - Демонстрація можливостей системи Real-Time Workshop
  23. cdma \ cdma - Бібліотека моделей системи Simulink для систем
                                         комунікації (CDMA Reference Blockset)
  1. cdma \ cdmamasks - Функції підтримки моделей CDMA
  2. cdma \ cdmamex - S-функції (S-Functions) системи CDMA
  3. cdma \ cdmademos - Демонстрації та приклади системи CDMA
  4. commblks \ commblks - Бібліотека моделей пристроїв зв'язку і комунікації
                                                 (Communications Blockset)
  1. commblks \ commmasks - Функції підтримки моделей Communications Blockset
  2. commblks \ commmex - S-функції бібліотеки Communications Blockset
  3. commblks \ commblksdemos - Демонстрації бібліотеки Communications Blockset
  4. comm \ comm - Системи зв'язку та комунікації (Communications Toolbox)
  5. comm \ commdemos-Демонстрація можливостей пакету Communications Toolbox
  6. control \ control - Системи управління (Control System Toolbox)
  7. control \ ctrldemos - Демонстрації можливостей Control System Toolbox
  8. dspblks \ dspblks - Бібліотека для цифрової обробки сигналів (DSP Blockset)
  9. dspblks \ dspmasks - Функції підтримки моделей DSP Blockset
  10. dspblks \ dspmex - S-функції і МЕХ-файли бібліотеки DSP Blockset
  11. dspblks \ dspdemos - Демонстрації і приклади бібліотеки DSP Blockset
  12. daq \ daq - Збір даних в режимі реального часу (Data Acquisition Toolbox)
  13. daq \ daqdemos - Демонстрації і приклади пакету Data Acquisition Toolbox
  14. database \ database - Робота з базами даних (Database Toolbox)
  15. database \ dbdemos - Демонстрації можливостей пакету Database Toolbox
  16. datafeed \ datafeed - Пакет збору фінансової інформації (Datafeed Toolbox)
  17. toolbox \ dials - Інтерфейс підтримки моделей Simulink (Dials & Gauges
                                       Blockset)
  1. filterdesign \ filterdesign - Проектування фільтрів (Filter Design Toolbox)
  2. ffilterdesign \ filtdesdemos - Демонстрації пакету Filter Design Toolbox
  3. finderiv \ finderiv - Розширення можливостей пакету Financial Toolbox
                                         (Financial Derivatives Toolbox)
  1. ftseries \ ftseries - Тимчасової аналіз фінансового ринку (Financial Time Series
Toolbox)
  1. finance \ finance - Фінанси (Financial Toolbox)
  2. finance \ calendar - Функції часу і дати пакету Financial Toolbox
  3. finance \ findemos - Демонстрації можливостей пакету Financial Toolbox
  4. toolbox \ fixpoint - Бібліотека для моделювання з кінцевою розрядністю
                                          (Fixed-Point Blockset)
  1. fixpoint \ fxpdemos - Демонстрації бібліотеки Fixed-Point Blockset
  2. fuzzy \ fuzzy - Розмиті безлічі (Fuzzy Logic Toolbox)
  3. fuzzy \ fuzdemos - Демонстрації можливостей пакету Fuzzy Logic Toolbox
  4. images \ images - Обробка зображень (Image Processing Toolbox)
  5. images \ imdemos - Демонстрації і приклади пакету Image Processing Toolbox
  6. instrument \ instrument - Зв'язок (підтримка інтерфейсу з апаратурою користувача)
                                              (Instrument Control Toolbox)
  1. lmi \ lmictrl Програми пакету LMI Control Toolbox в управлінні
  2. lmi \ lmilab - Синтез систем управління на основі лінійних матричних
                                      нерівностей (LMI Control Toolbox)
  1. toolbox \ compiler - Компілятор системи MATLAB (MATLAB Compiler)
  2. map \ map - Картографія (Mapping Toolbox)
  3. mpc \ mpccmds - Системи управління з еталонною моделлю (Model Predictive
Control Toolbox)
  1. mpc \ mpcdemos - Демонстрації пакету Model Predictive Control Toolbox
  2. mutools \ commands - μ - аналіз і синтез систем управління (Mu-Analysis and
Synthesis Toolbox)
  1. nnet \ nnet - Нейронні мережі (Neural Network Toolbox)
  2. nnet \ nndemos - Демонстрації можливостей пакету Neural Network
  3. toolbox \ ncd - Проектування нелінійних систем управління (Nonlinear
                                      Control Design Blockset)
  1. toolbox \ optim - Оптимізація (Optimization Toolbox)
  2. toolbox \ pde - Диференціальні рівняння в приватних похідних і метод
                                       кінцевих елементів (Partial Differential Equation Toolbox)
  1. powersys \ powersys - Моделювання енергетичних систем (Power System
                                              Blockset)
  1. powersys \ powerdemo - Демонстрації моделей Power System Blockset
  2. targets \ ecoder - Створення користувальницьких програм на основі моделей
                                       Simulink (Real-Time Workshop Embedded Coder)
  1. toolbox \ robust - Синтез робастних систем управління (Robust Control Toolbox)
  2. signal \ signal - Обробка сигналів (Signal Processing Toolbox)
  3. signal \ sigdemos - Демонстрації можливостей пакета Signal Processing Toolbox
  4. toolbox \ splines - Сплайн-апроксимація (Spline Toolbox)
  5. toolbox \ stats - Статистика (Statistics Toolbox)
  6. toolbox \ symbolic - Символьна математика (Symbolic Math Toolbox)
  7. ident \ ident - Ідентифікація параметрів систем управління (System
Identification Toolbox)
  1. wavelet \ wavelet - Імпульсна декомпозиція сигналів та зображень (Wavelet
Toolbox)
  1. wavelet \ wavedemo - Демонстрація можливостей пакету Wavelet Toolbox
  2. xpc \ xpc - Пакет макетування та контролю систем реального
                                               часу (xPC Target)
  1. xpc \ xpcdemos - Демонстрації можливостей пакету xPC Target
Примітка. Нзваніе кожного тематичного напряму визначає відповідний щую директорію (Каталог) системи MATLAB.
Додаток 2. Команди загального призначення (General purpose commands)
Директорія - matlab \ general
Загальна інформація (General information)
  1. help - Оперативна довідка, виводить текст у командний рядок.
  2. helpwin - Оперативна довідка, виводить інформацію в спеціальному вікні (help
browser).
  1. helpdesk - Вичерпна інформація в робочому вікні допомоги.
  2. support - Відкриває Web-сторінку технічної допомоги фірми MathWorks.
  3. demo - Виконує демонстраційні ролики.
  4. java - використання засобів Java з MATLAB-а.
  5. ver - Інформація про версії MATLAB-а, SIMULINK-а і прикладних пакетів.
  6. whatsnew - Виклик інформації про нові властивості версій.   
 
Управління робочим простором (Managing the workspace)
  1. who - Виводить в командне вікно список поточних змінних.
  2. whos - Виводить в командне вікно список поточних змінних в довгому
                         форматі, із зазначенням розмірів, числа байтів і класів.
  1. workspace - Викликає Вікно Перегляду Робочого Простору (Workspace
Browser), т.е.спеціальний Графічний інтерфейс користувача (GUI)
                        для виконання дій з змінними робочого простору.
  1. clear - Видаляє змінні та функції з пам'яті.
  2. pack - Дефрагментація робочої області пам'яті.
  3. load - Завантаження змінних в робочий простір з диска.
  4. save - Збереження змінних робочого простору на диск.
  5. quit - Припинення сеансу роботи системи MATLAB.
Керуючі команди і функції (Managing commands and functions)
  1. what - Виводить список файлів MATLAB-а в поточній директорії в
                         командне вікно.
  1. type - Друкує вміст заданого М.-файлу в командному вікні.
  2. edit - Викликає вікно Редактора / відладчик.
  3. open - Відкриває файли з розширення.
  4. which - локалізують (виводить в командне вікно) шлях доступу до
                         функцій і файлів.
  1. pcode - Створює Р-файл псевдокоду з виконанням граматичного аналізу.
  2. inmem - Виводить список функцій в пам'яті.
  3. mex - компілює МЕХ-файли.

Управління шляхами доступу (Managing the search path)

  1. path - Висновок / зміна шляхів доступу.
  2. addpath - Додає директорію до шляхів доступу.
  3. rmpath - Видаляє директорію із шляхів доступу.
  4. pathtool - Модифікує шляхи доступу.
  5. rehash - Управління кеш-пам'яттю.
  6. import - Імпорт пакетів Java в поточну область.
Управління командним вікном (Controlling the command window)
  1. echo - Вивід в командне вікно виконуваних в М-файлах команд.
  2. more - Управління посторінковим виведенням інформації на екран.
  3. diary - Збереження запису (щоденника) сеансу роботи системи MATLAB.
  4. format - Контроль формату виведення даних на екран.
  5. beep - Виробляє звуковий сигнал (beep).
Команди операційної системи (Operating system commands)
  1. cd - Змінити поточної директорії.
  2. copyfile - Копіювати файлу.
  3. pwd - Показати (надрукувати) поточну робочу директорію.
  4. dir - Виведення на екран лістингу каталогу.
  5. delete - Видалити файл.
  6. getenv - Отримання значення змінної з зовнішньої операційного середовища.
  7. mkdir - Створити директорію.
  8. ! - Виконати команди операційної системи.
  9. dos - Виконати команду DOS і повернути результат.
  10. unix - Виконати команду UNIX і повернути результат.
  11. vms - Виконати команду VMS DCL і повернути результат.
  12. web - Викликати Web browser.
  13. computer - Видати тип комп'ютера.
  14. isunix - Істинно, якщо встановлена ​​UNIX-версія MATLAB-а.
  15. ispc - Істинно, якщо встановлена ​​PC (Windows)-версія MATLAB-а.
Налагодження М-файлів (Debugging M-files)
  1. debug - Вивести список команд налагодження і редагування файлів.
  2. dbstop - Встановити точку зупину (контральнуюточку).
  3. dbclear - Видалити контрольну точку.
  4. dbcont - Продовжити виконання.
  5. dbdown - Перехід між робочими просторами редагованих функцій
                            зверху вниз.
  1. dbstack - Вивести в командне вікно стек викликаються функцій.
  2. dbstatus - Вивести список всіх контрольних точок.
  3. dbstep - Виконати одну чи більше рядків.
  4. dbtype - Надрукувати в командному вікні редагований файл із зазначенням
                           номерів рядків.
  1. dbup - Перехід між робочими просторами редагованих функцій
                           знизу вгору.
  1. dbquit - Вихід з режиму відладки.
  2. dbmex - Налагодження MEX-файлів (тільки для системи UNIX).
Профілювальники М-файлів (Profiling M-files)
  1. profile - Виміряти й вивести на екран тимчасові витрати при виконанні файлу
  2. profreport - Сформувати звіт про профілюванні файлу.  
Функції для визначення місцезнаходження залежних функцій М-файлу (Tools to locate dependent functions of an M-file).
  1. depfun - Визначити місцезнаходження функцій, від яких залежить М-файл.
  2. depdir - Визначити місцезнаходження директорії, гдерасположени функції,
                          від яких залежить М-файл.
  1. inmem - Вивести в командне вікно список функцій в пам'яті.

 

 

Додаток 3. Оператори та спеціальні символи

Директорія - matlab \ general
Арифметичні оператори (Arithmetic operators)
  1. plus - Plus + - Додавання.
  2. uplus - Unary plus + - Унарні складання.
  3. minus - Minus - - Вирахування.
  4. uminus - Unary minus - - Унарні віднімання.
  5. mtimes - Matrix multiply * - Множення матриць.
  6. times - Array multiply .* - Множення масивів.
  7. mpower - Matrix power ^ - Зведення в ступінь матриць.
  8. power - Array power. ^ - Зведення в ступінь масивів.
  9. mldivide - Left matrix divide \ - Ліве поділ матриць.  
  10. mrdivide - Right matrix divide / - Праве поділ матриць.   
  11. ldivide - Left array divide. \ - Ліве поділ масивів.
  12. rdivide - Right array divide. / - Праве поділ масивів.
  13. kron - Kronecker tensor product - Кронекеровское твір.      
Оператори відносини (Relational operators)
  1. eq - Equal ==
  2. ne - Not equal ~ =
  3. lt - Less than <
  4. gt - Greater than>
  5. le - Less than or equal <=
  6. ge - Greater than or equal> =
Логічні оператори (Logical operators)
  1. and - Logical AND & - Логічне «Так».
  2. or - Logical OR | - Логічне «Або».
  3. not - Logical NOT ~ - Логічне «Ні».
  4. xor - Logical EXCLUSIVE OR - Логічне виключає «Або».
  5. any - Істинно, якщо хоч один з елементів вектора не дорівнює нулю.
  6. all - Істинно, якщо всі елементи вектора не дорівнюють нулю.    
Спеціальні символи (Special characters.)
  1. colon -: - Двокрапка.
  2. paren - () - Круглі дужки і індексація.            
  3. paren - [] - Квадратні дужки.
  4. paren - {} - Фігурні дужки та індексація.         
  5. punct - @ - Створення дескриптора функцій.
  6. punct -. - Десяткова крапка.
  7. punct -. - Доступ до поля структури.
  8. punct - .. - Батьківська директорія.
  9. punct - ... - Продовження.
  10. punct -, - Роздільник.
  11. punct -; - Крапка з комою.
  12. punct -% - Коментар.    
  13. punct -! - Виклик команди операційної   системи.                                                                                 
  14. punct - = - Присвоєння значень.
  15. punct - '- лапки.
  16. transpose -. ' - Поелементне транспонування.
  17. ctranspose - '- Транспонування і комплексне поєднання.
  18. horzcat - [,] - Горизонтальне об'єднання об'єктів.   
  19. vertcat - [;] - Вертикальне об'єднання об'єктів.   
  20. subsasgn - (), {},. - Індексне привласнення.
  21. subsref - (), {},. - Індексна посилання.
  22. subsindex - - Індексний дескриптор                      
Оператори побітової обробки (Bitwise operators)
  1. bitand - Побітове логічне множення (Bit-wise AND).
  2. bitcmp - Побітове n-розрядне доповнення.
  3. bitor - Побітове логічне «Або» (Bit-wise OR).
  4. bitmax - Максимальне ціле число.
  5. bitxor - Побітове логічне виключає «Або» (Bit-wise XOR).
  6. bitset - Встановити значення біта.
  7. bitget - Отримати значення біта.
  8. bitshift - Складання бітів по модулю 2.  
Оператори обробки множин (Set operators)
  1. union - Об'єднання множин.
  2. unique - Видалення з множин однакових елементів.
  3. intersect - Перетин множин.
  4. setdiff - Різниця множин.
  5. setxor - Операція виключає «Або» над множинами.
  6. ismember - Виявлення однакових елементів.

Додаток 4. Елементарні математичні функції

                             (Elementary math functions).
Директорія matlab \ elfun
Тригонометричні функції (Trigonometric)
  1. sin - Сінус.
  2. sinh - Гіперболічний синус.
  3. asin - Зворотний синус.
  4. asinh - Зворотний гіперболічний синус.
  5. cos - Косинус.
  6. cosh - Гіперболічний косинус.
  7. acos - Зворотний косинус.
  8. acosh - Зворотний гіперболічний косинус.
  9. tan - Тангенс.
  10. tanh - Гіперболічний тангенс.
  11. atan - Зворотний тангенс.
  12. atan2 - 4-х квандрантний зворотний тангенс.
  13. atanh - Зворотний гіперболічний тангенс.
  14. sec - секанс.
  15. sech - Гіперболічний секанс.
  16. asec - Зворотний секанс.
  17. asech - Зворотний гіперболічний секанс.
  18. csc - косеканс.
  19. csch - Гіперболічний косеканс.
  20. acsc - Зворотний косеканс.
  21. acsch - Зворотний гіперболічний косеканс.
  22. cot - котангенс.
  23. coth - Гіперболічний котангенс.
  24. acot - Зворотний котангенс.
  25. acoth - Зворотний гіперболічний котангенс.      
     
Показникові функції (Exponential)
  1. exp - Експоненціальна функція.
  2. log - Натуральний логарифм.
  3. log10 - Логарифм по підставі 10.
  4. log2 - Логарифм по підставі 2.
  5. pow2 - Експонента за основою 2.
  6. sqrt - Квадратний корінь.
  7. nextpow2 - Найближча ступінь з основою 2.          
Комплексні числа (Complex)
  1. abs - Абсолютне значення числа.
  2. angle - Аргумент комплексного числа.
  3. complex - Конструювання комплексних даних з дійсних і уявних
                            частин.
  1. conj - Комплексне сполучення.
  2. imag - Уявна частина комплексного числа.
  3. real - Чинна частина комплексного числа.
  4. unwrap - Коригування фазового кута.
  5. isreal - Істинно, якщо масив містить реальні числа.
  6. cplxpair - Сортування чисел в комплексно-зв'язані пари.
Округлення і залишки (Rounding and remainder)
  1. fix - Округлення в меншу сторону.
  2. floor - Округлення в бік мінус нескінченність.
  3. ceil - Округлення в бік плюс нескінченність
  4. round - Округлення в бік найближчого цілого числа.
  5. mod - Залишок зі знаком після поділу (Modulus or signed remainder after
                         division).
  1. rem - Залишок після поділу.
  2. sign - Функція знака (Signum).

Додаток 5. Елементарні матриці та операції над ними

                               (Elementary matrices and matrix manipulation)
Директорія matlab \ elmat
Елементарні матриці і вектори (Elementary matrices)
  1. zeros - Формування масиву нулів (матриці з нулів).
  2. ones - Формування масиву одиниць.
  3. eye - Одинична матриця.
  4. repmat - Формування багатовимірного масиву з блоків.
  5. rand - Рівномірно розподілені випадкові числа.
  6. randn - Нормально розподілені випадкові числа.
  7. linspace - Формування масиву рівновіддалених чисел.
  8. logspace - Формування вузлів логарифмічною сітки.
  9. freqspace - Формування масиву частот для частотних відгуків.
  10. meshgrid - Формування вузлів двовимірної і тривимірної сіток (для побудови
                             тривимірних графіків).
  1. : - Формування векторів з рівновіддаленими значеннями і
                             індексування матриць.
Основна інформація про масивах (Basic array information)
  1. size - Розмір масиву (матриці).
  2. length - Довжина вектора.
  3. ndims - Число розмірностей масиву.
  4. disp - Висновок в командне вікно матриці або тексту.
  5. isempty - Істинно для порожніх масивів.
  6. isequal - Істинно для однакових масивів.
  7. isnumeric - Істинно для числових масивів.
  8. islogical - Істинно для логічних масивів.
  9. logical - Перетворення числових масивів в логічні.
Перетворення матриць (Matrix manipulation)
  1. reshape - Перетворення розмірів багатовимірного масиву.
  2. diag - Діагональні матриці і діагоналі матриць.
  3. blkdiag - Блочно-діагональне об'єднання матриць.
  4. tril - Витяг нижньої трикутної частини матриці.
  5. triu - Витяг верхньої трикутної частини матриці.
  6. fliplr - Дзеркальне відображення зліва направо.
  7. flipud - Дзеркальне відображення зверху вних.
  8. flipdim - Дзеркальне відображення уздовж заданої розмірності (узагальнену
                          транспонування).
  1. rot90 - Поворот матриць на 90 градусів.
  2. find - Визначення індексів ненульових елементів масиву.
  3. end - Останній індекс за вказаною розмірності.
  4. sub2ind - Перетворення багатовимірної нумерації в послідовну.
  5. ind2sub - Перетворення послідовної нумерації в багатовимірну.     
Спеціальні символи, змінні і константи (Special variables and constants)
  1. ans - Результат виконання останньої операції.
  2. eps - Точність машинного представлення чисел з плаваючою комою.
  3. realmax - Найбільший позитивний число з плаваючою комою.
  4. realmin - Найменша позитивне число з плаваючою комою.
  5. pi - 3.1415926535897 ....
  6. i, j - Уявна одиниця.
  7. inf - Нескінченність.
  8. NaN - нечислове значення.
  9. isnan - Істинно для нечислових значень.
  10. isinf - Істинно для нескінченних значень.
  11. isfinite - Істинно для кінцевих значень.
  12. why - Видає відповідь у вигляді набору випадкових фраз.      
Спеціальні типи матриць (Specialized matrices)
  1. compan - Супутня матриця.
  2. gallery - Набір тестових матриць.
  3. hadamard - Матриця Адамара.
  4. hankel - Матриця Ганкеля.
  5. hilb - Матриця Гільберта.
  6. invhilb - Зворотній матриця Гільберта.
  7. magic - Матриця «Чарівний квадрат».
  8. pascal - Матриця Паскаля.
  9. rosser - Матриця Рессера (тестова матриця для класичної симетричною
                         проблеми власних значень).
  1. toeplitz - Матриця Теплиця (Toeplitz matrix).
  2. vander - Матриця Вандермонда (Vandermonde matrix).
  3. wilkinson - Матриця Уїлкінсона (тестова матриця Уїлкінсона (Wilkinson) для
                            задачі на власні значення.
Додаток 6. - Матричні функції і лінійна алгебра
                              (Matrix functions - numerical linear algebra)
Директорія matlab \ matfun

Матричний аналіз (Matrix analysis)
  1. norm - Норми векторів і матриць.
  2. normest - Оцінка 2-норми матриць.
  3. rank - Ранг матриці.
  4. det - Детермінант матриці
  5. trace - Слід матриці (сума діагональних елементів).
  6. null - Нуль-простір (ядро) матриці.
  7. orth - ортонормального базис матриці.
  8. rref - Трикутна форма матриці (Reduced row echelon form).
  9. subspace - Кут між двома підпросторами.                
Лінійні рівняння (Linear equations)
  1. \ And / - Рішення лінійних рівнянь (див. Додаток 3. Арифметичні
                        оператори)
  1. inv - Зворотній матриця.
  2. rcond - Зворотній величина числа обумовленості матриці, знайдена при по-
                 мощі обчислювача пакету LAPACK (LAPACK reciprocal condition estimator).
  1. cond - Число обумовленості по відношенню до звернення матриць.
  2. condest - Оцінка числа обумовленості 1-норми матриці.
  3. normest1 - Оцінка 1-норми матриці.
  4. chol - Розкладання Холецкого (Cholesky factorization).
  5. cholinc - Неповна розкладання Холецкого (Incomplete Cholesky factorization).
  6. lu - LU-розкладання (LU factorization).
  7. luinc - Неповна LU-розкладання (Incomplete LU factorization).
  8. qr - ортогональна-трикутна декомпозиція.
  9. lsqnonneg - Метод найменших квадратів з невід'ємними обмеженнями.
  10. pinv - Псевдообернена матриця.
  11. lscov - Метод найменших квадратів у присутності шумів.       
Власні значення та сингулярні числа (Eigenvalues ​​and singular values)
  1. eig - Власні значення та власні вектори.
  2. svd - Сингулярне розкладання матриці.
  3. gsvd - Узагальнене сингулярне розкладання матриці.
  4. eigs - Обчислення декількох власних значень (з найбільшими
                       модулями).
  1. svds - Обчислення декількох сингулярних чисел.
  2. poly - Характеристичний поліном матриці.
  3. polyeig - Обчислення власних значень матричного полінома (Polynomial
                        eigenvalue problem).
  1. condeig - Число обумовленості щодо власних значень матриці.
  2. hess - Приведення до форми Хессенберга (Hessenberg form).
  3. qz - QZ-факторизація (приведення пари матриць до узагальненої формі Шура).
  4. schur - Приведення до форми Шура (Schur decomposition).
Обчислення функцій від матриць (Matrix functions).
  1. expm - Обчислення матричної експоненти.
  2. logm - Обчислення логарифма матриці.
  3. sqrtm - Обчислення квадратного кореня матриці.
  4. funm - Обчислення довільної функції від матриці.
  5. expm1 - Матрична експонента з використанням розкладання Паде.
  6. expm2 - Матрична експонента з використанням розкладання в ряд Тейлора.
  7. expm3 - Матрична експонента з використанням власних значень і
                           власних векторів.     
Програми для процедур факторизації матриць (Factorization utilities)
  1. qrdelete - Видалити стовпець у QR-розкладанні.
  2. qrinsert - Додати стовпець в QR-розкладання.
  3. rsf2csf - Перетворення дійсної блочно-діагональною форми до
                         комплексної діагональної формі.
  1. cdf2rdf - Перетворення комплексної блочно-діагональною форми до
                          дійсної діагональної формі.
  1. balance - Масштабування матриці для підвищення точності обчислення
                           власних значень.
  1. planerot - Перетворення Гивенса (плоске вращеніеГівенса).
  2. cholupdate - Розкладання Холецкого модифікованої матриці.
  3. qrupdate - QR-розкладання модифікованої матриці.
Додаток 7. Поліноми та інтерполяція (Interpolation and polynomials)
Директорія matlab \ polyfun
Інтерполяція даних (Data interpolation)
  1. pchip - Інтерполяція кусково кубічним поліномом Ерміта.
  2. interp1 - Одновимірна таблична інтерполяція.
  3. interp1q - Швидка одномірна таблична інтерполяція.
  4. interpft - Одновимірна інтерполяція з використанням швидкого перетворення
                         Фур'є.
  1. interp2 - Двовимірна таблична інтерполяція.
  2. interp3 - Тривимірна таблична інтерполяція.
  3. interpn - Багатовимірна таблична інтерполяція.
  4. griddata - Двовимірна інтерполяція на нерівномірній сітці.
  5. griddata3 - Тривимірна інтерполяція на нерівномірній сітці.
  6. griddatan - Багатовимірна інтерполяція на нерівномірній сітці.
Інтерполяція сплайнами (Spline interpolation)
  1. spline - Кубічна інтерполяція сплайнами.
  2. ppval - Оцінка кусково-неперервних поліномів.
Геометричний аналіз (Geometric analysis)
  1. delaunay - Побудова триангуляційної сітки (Delaunay triangulation).
  2. delaunay3 - Тривимірна стільниковий сітка Делануа (3-D Delaunay tessellation).
  3. delaunayn - Багатовимірна стільниковий сітка Делануа (ND Delaunay tessellation).
  4. dsearch - Пошук найближчої точки в тріангуляції Делануа.
  5. dsearchn - Пошук найближчої точки в багатовимірної стільникового сітці Делануа.
  6. tsearch - Найближча точка двовимірної тріангуляції.
  7. tsearchn - Найближча точка багатовимірної тріангуляції.
  8. convhull - Побудова двовимірної опуклої оболонки.
  9. convhulln - Побудова багатовимірної опуклої оболонки.
  10. voronoi - Побудова діаграми Вороного.
  11. voronoin - Побудова багатовимірної діаграми Вороного.
  12. inpolygon - Істинно для точок області, обмеженою багатокутником.
  13. rectint - Площі областей перетину двох сімейств прямокутників.
  14. polyarea - Площа прямокутника.           
Поліноми (Polynomials)
  1. roots - Знаходження коренів поліномів.
  2. poly - Обчислення характеристичного полінома матриці або визначення
                        полінома з заданими корінням.
  1. polyval - Обчислення значень поліномів у заданих точках.
  2. polyvalm - Обчислення значень матричного полінома.
  3. residue - Розкладання на прості дроби (обчислення відрахувань).
  4. polyfit - Апроксимація даних поліномом.
  5. polyder - Обчислення похідних від поліномів.
  6. polyint - Аналітичне інтегрування поліномів.
  7. conv - Множення поліномів.
  8. deconv - Розподіл поліномів.

Додаток 8. Аналіз даних і перетворення Фур'є

(Data analysis and Fourier transforms)

Директорія matlab \ datafun

Основні операції (Basic operations)
  1. max - Визначення максимальних елементів масиву.
  2. min - Визначення мінімальних елементів масиву.
  3. mean - Визначення середніх значень елементів масиву.
  4. median - Визначення медіан (серединних значень).
  5. std - Визначення стандартних відхилень елементів масиву.
  6. var - Визначення дисперсій елементів масиву.
  7. sort - Сортування елементів масиву.
  8. sortrows - Сортування рядків матриць.
  9. sum - Підсумовування елементів масиву.
  10. prod - Твір елементів масиву.
  11. hist - Побудова гістограми.
  12. histc - Підрахунок елементів гістограми.
  13. trapz - Чисельне інтегрування методом трапецій.
  14. cumsum - куммулятівная сума елементів масиву.
  15. cumprod - куммулятівная твір елементів масиву.
  16. cumtrapz - куммулятівная чисельне інтегрування методом трапецій.
Кінцеві різниці (Finite differences)
  1. diff - Обчислення кінцевих різниць і наближене диференціювання.
  2. gradient - Наближене обчислення градієнта функцій.
  3. del2 - Дискретна апроксимація диференціального оператора Лапласа.                
Кореляційні співвідношення (Correlation)
  1. corrcoef - Обчислення коефіцієнтів кореляції.
  2. cov - Обчислення ковариационной матриця.
  3. subspace - Обчислення кута між двома підпросторами.      
Фільтрація і згортка (Filtering and convolution)
  1. filter - Одновимірна цифрова фільтрація.
  2. filter2 - Двовимірна цифрова фільтрація.
  3. conv - Згортка і множення поліномів.
  4. conv2 - Двовимірна згортка.
  5. convn - N - мірна (багатовимірна) згортка.
  6. deconv - Звернення згортки і ділення поліномів.
  7. detrend - Видалення лінійного тренду.          
Перетворення Фур'є (Fourier transforms)
  1. fft - Дискретне перетворення Фур'є.
  2. fft2 - Двовимірне дискретне перетворення Фур'є.
  3. fftn - Багатомірне дискретне перетворення Фур'є.
  4. ifft - Зворотне дискретне перетворення Фур'є.
  5. ifft2 - Двовимірне зворотне дискретне перетворення Фур'є.
  6. ifftn - Багатомірне зворотне дискретне перетворення Фур'є.
  7. fftshift - Перенесення нульової частоти в середину спектру.
  8. ifftshift - Анулювання перенесення нульової частоти в середину спектру.
Додаток 9. Функції символьних рядків (Character strings)
Директорія matlab \ strfun
 
Загальні (General)
  1. char - Сформувати масив символів (рядок).
  2. double - Перетворити символи рядка в числові коди.
  3. cellstr - Перетворити масив символів у масив комірок для рядків.
  4. blanks - Сформувати рядок прогалин.
  5. deblank - Видалити прогалини в кінці рядка.
  6. eval - Виконання вираження, записаного у вигляді рядка символів.      
Перевірка рядків (String tests)
  1. ischar - Істинно, якщо це масив символів.
  2. iscellstr - Істинно, якщо це масив комірок для рядків.
  3. isletter - Істинно, якщо це символ (літера) алфавіту.
  4. isspace - Істинно, якщо це прогалина.              
Операції над рядками (String operations)
  1. strcat - Горизонтальне об'єднання рядків.
  2. strvcat - Вертикальне об'єднання рядків.
  3. strcmp - Порівняти рядка.
  4. strncmp - Порівняти перші N символів рядків.
  5. strcmpi - Порівняти рядка ігноруючи регістр.
  6. strncmpi - Порівняти перші N символів рядків ігноруючи регістр.
  7. findstr - Знайти задану рядок у складі іншого рядка.
  8. strjust - Вирівняти масив символів.
  9. strmatch - Знайти всі збіги.
  10. strrep - Замінити один рядок інший.
  11. strtok - Знайти частина рядка, обмежену роздільниками (token).
  12. upper - Перекласти всі символи рядка в верхній регістр.
  13. lower - Перекласти всі символи рядка в нижній регістр.
Перетворення рядків (String to number conversion)
  1. num2str - Перетворення числа в рядок.
  2. int2str - Перетворення цілих чисел в рядок.
  3. mat2str - Перетворення матриці в рядок.
  4. str2double - Перетворення рядка в число подвоєної точності.
  5. str2num - Перетворення масиву рядків у числовий масив.
  6. sprintf - Записати форматовані знаки у вигляді рядка.
  7. sscanf - Прочитати рядок з урахуванням формату.   
Перетворення систем числення (Base number conversion)
  1. hex2num - Перетворити шістнадцяткове число в число подвоєною
                              точності.
  1. hex2dec - Перетворити шістнадцяткове число на десяткове число.
  2. dec2hex - Перетворити десяткове число в шістнадцяткове число.
  3. bin2dec - Перетворити двійкову рядок у десяткове число.
  4. dec2bin - Перетворити десяткове число в двійкову рядок.
  5. base2dec - Перетворити По-рядок у десяткове число.
  6. dec2base - Перетворити десяткове число у В-рядок.
Довідник з базових функцій
системи MATLAB
Функція PLOT
Призначення - Двовимірний лінійних графік
Синтаксис - plot (Y)
                                        plot (X1, Y1, ...)
plot (X1, Y1, LineSpec, ...)
plot (..., 'PropertyName', PropertyValue, ...)
h = plot (...)
Опис. Якщо прямокутний числовий масив Y є дійсним, то функція plot (Y) будує лінійні графіки стовпців масиву Y залежно від індексів їх елементів. Якщо Y містить комплексні числа, то запис plot (Y) еквівалентна запису plot (real (Y), imag (Y)). У всіх інших випадках, при використанні plot уявні компо-ненти ігноруються.
Команда plot (X1, Y1, ...), де кількість пар масивів може бути довільним, здійснюва-ляет наступні побудови.
· Якщо обидва масиви одномірні, то будується лінійний графік функції, де одномер-ний масив X1 відповідає значенням аргументу, а одновимірний масив Y1 - зна-значений функції.
· Якщо обидва масиви X1 і Y1 - двовимірні (вони повинні мати при цьому однакову розмірність), то будуються попарно лінійні залежності стовпців Y1 від відпо-чих стовпців X1.
· Якщо масив Y1 двовимірний, а масив X1 одновимірний, то будуються лінійні графіки всіх стовпців або рядків масиву Y1 в залежності від елементів вектора X1. Вибір стовпців або рядків масиву Y1 тут визначається розмірністю вектора X1, тобто це можуть бути і стовпці і рядки (якщо масив Y1 - квадратний, то пріоритет відда-ється стовпцям)
· Якщо двовимірним є масив X1, а масив Y1 одновимірний (тобто вектор), то будуються графіки стовпців або рядків масиву X1 в залежності від елементів вектора-ра Y1 (див. також попередній варіант).
Функція plot (X1, Y1, LineSpec ,...) здійснює наведені вище побудови, причому в специфікації ліній LineSpec можна вказати типи ліній, символи маркерів і їх кольору. Ви можете комбінувати трійки Xn, Yn, LineSpec з парами Xn, Yn, тобто задавати спеці-фікації LineSpec тільки для деяких пар масивів, наприклад: plot (X1, Y1, X2, Y2, LineSpec, X3, Y3).
Функція plot (..., 'PropertyName', PropertyValue ,...) встановлює властивість всіх побудувати-енних ліній, вказане рядком 'PropertyName', у відповідність з його значенням, заданим в PropertyValue (Див. розділ «Приклади» нижче).
h = plot (...) повертає вектор-стовпець всіх дескрипторів (handles) побудованих на графи-ке ліній, по одному дескриптору на кожну лінію.
Зауваження. Якщо ви не ставите кольору при побудові більш ніж однієї лінії, то функція plot циклічно вибирає послідовні кольори так, як вони зазначені у властивості ColorOrder поточних осей. Після того як всі кольори, визначені в ColorOrder, будуть вико-користані, функція plot використовує циклічно стилі ліній (line styles) так, як вони визначені у властивості LineStyleOrder поточних осей. При цьому, після переходу до кожного нового стилю лінії, відбувається циклічний вибір всіх певних кольорів. Відзначимо, що за замовчуванням, система MATLAB відновлює властивості ColorOrder і LineStyleOrder при кожному новому виклику функції plot. Якщо ви хочете зберегти введені вами у дані властивості зміни, то ви повинні задати ці зміни як значення за замовчуванням. Наприклад, команда
set (0, 'DefaultAxesColorOrder', [0 0 0], 'DefaultAxesLineStyleOrder','-|-.|--|:')
задає на кореневому (екранному) рівні використання тільки чорного кольору при побудові ліній (властивість ColorOrder), а також використання наступних стилів ліній (властивість LineStyleOrder): суцільна лінія (-), штрих-пунктирна лінія (-.), штрихова лінія (- ) і пунктирна лінія   (:).
Додаткова інформація
• Д ля отримання більш великої інформації за завданням стилів і квітів лінії див. розміри справ LineSpec.

Приклади

1. Завдання кольору і розміру маркерів
Крім кольору і стилю, є також можливість ставити й інші графічні є характеристики ліній (більш докладний опис цих властивостей дано в описі функції line):
LineWidth - завдання ширини лінії в точках (points), де 1 точка дорівнює 1 / 72 дюйма.
MarkerEdgeColor - завдання кольору маркера чи кольору граней маркера для «заповнених» маркерів (гуртків, квадратів, ромбів, пентаграм (п'ятикутників), гексаграмм (шести-кутників), та чотирьох типів трикутників).
MarkerFaceColor - завдання кольору поверхні заповнених маркерів.
MarkerSize - завдання розміру маркера в одиницях точки.
Наприклад, вирази
x =-pi: pi/10: pi;
y = tan (sin (x)) - sin (tan (x));
plot (x, y, '- rs', 'LineWidth', 2, ...
'MarkerEdgeColor', 'k',...
'MarkerFaceColor', 'g',...
'MarkerSize', 10)
дають наступний графік

2. Завдання положень міток (Tick-Mark) і вказівка ​​написів (Labeling)
Ви маєте можливість встановлювати положення позначок на осях, а також вид написів на кожній мітці. Наприклад, в наступному графіку синусоїдальної функції проводиться зміна маркування осі x, з метою надання більш значущих та інформативних значень міток і їх написів:
x =-pi: 0.1: pi;
y = sin (x);
plot (x, y)
set (gca, 'XTick',-pi: pi / 2: pi)
set (gca, 'XTickLabel',{'- pi', '-pi / 2', '0 ',' pi / 2 ',' pi '})

Додавання заголовків, написів до осях і анотацій
Додамо тепер написи до осей і коментар до точки-pi / 4, sin (-pi / 4).
Наступні три стандартні команди дозволяють ввести написи до осей x і y, а також загальний заголовок до графіку
                                                 xlabel ('- \ pi \ leq \ Theta \ leq \ pi')
ylabel ('sin (\ Theta)')
title ('Plot of sin (\ Theta)')
а команда text дає можливість ввести текстову інформацію в будь-яку обрану точ-ку координатних осей
text (-pi / 4, sin (-pi / 4), '\ leftarrow sin (- \ pi \ div4)', 'HorizontalAlignment', 'left')
Змінимо також колір лінії на червоний, знаходячи спершу дескриптор лінії, створеної фун-кціей plot, а потім встановивши необхідну властивість лінії Color property. У тому ж висловлю-ванні встановимо товщину лінії LineWidth дорівнює двом точкам
set (findobj (gca, 'Type', 'line', 'Color', [0 0 1 ]),...
'Color', 'red',,...
'LineWidth', 2)

Див також функції:
  axis, bar, grid, legend, line, LineSpec, loglog, plotyy, semilogx, semilogy, subplot, xlabel,
xlim, ylabel, ylim, zlabel, zlim, stem
Див властивість String функції text, де дається список символів і описується їх примі-ня.
LineSpec
Призначення. Специфікації завдання властивостей графічного об'єкта лінія (Line).
Опис. У даному розділі описується як можна задати властивості ліній, які використовую-мих при побудові графіків. Система MATLAB дає можливість задавати багато ха-рактеристики, включаючи:
  • Стиль лінії (Line style)
  • Товщину лінії (Line width)
  • Колір (Color)
  • Тип маркера (Marker type)
  • Розмір маркера (Marker size)
  • Кольори поверхні і граней маркера (для заповнених маркерів)

MATLAB передбачає спеціальні символьні специфікатора (описатели) для сти-лей ліній, типів маркерів і квітів. У наступних таблицях дається перелік цих специфікатором.

Специфікатор стилів лінії


Специфікатор

Стилі лінії

-
Суцільна лінія
(За замовчуванням)
  -
Штрихове лінія
:
Пунктирна лінія
-.
Штрих-пунктирна лінія

Специфікатор маркерів

Специфікатор
Типи маркерів
+
Знак плюс
o
Кружальце
*
Зірочка
.
Точка
x
Хрестик
s
Квадрат
d
Ромб
^
Трикутна стрілка вгору
v
Трикутна стрілка вниз
>
Трикутна стрілка направо
<
Трикутна стрілка наліво
p
П'ятикутна зірка (пентаграма)
h
Шестикутна зірка (гексаграмма)

Специфікатор кольору

Специфікатор
Колір
r
Червоний
g
Зелений
b
Синій
c
Блакитний (cyan)
m
Магента (magenta)
y
Жовтий
k
Чорний
w
Білий
Багато графічні функції допускають аргумент LineSpec, який визначає три специфікатора для характеристики лінії:
  • Стиль лінії
  • Тип маркера
  • Колір
Наприклад, функція plot (x, y, '-. or') будує графік значень y від аргументу x, використовуючи штрих-пунктирну лінію (-.); розміщує круглі маркери (o) у точках даних, і окра-жують як лінію, так і маркери в червоний колір (r). Дані специфікатора потрібно задати (у будь-якому порядку) як рядок символів в лапках, після записів масивів даних. Якщо ви задаєте в LineSpec тільки маркери, але не стиль лінії (наприклад, plot (x, y, 'd')), MATLAB завдає тільки маркери (без ліній)
Пов'язані (родинні) властивості. При використанні функцій plot і plot3, ви можете задавати також інші характеристики ліній, використовуючи такі графічні властивості:
  • LineWidth - задає ширину лінії (в точках, рівних 1 / 72 дюйма)
  • MarkerEdgeColor - задає колір маркера або колір граней для заповнених маркерів (гурток, квадрат, ромб, пентаграма, гексаграмма, і чотири трикутника).
  • MarkerFaceColor - задає колір поверхні заповненого маркера
  • MarkerSize - задає розмір маркера в точках
На додаток, ви можете задавати графічні властивості LineStyle, Color, і Marker замість використання символьного рядка. Це може бути корисним, наприклад, якщо ви хочете задати колір, якого немає в наведеному вище списку специфікатором кольору, за допомогою трійки значень RGB. Більш детальна інформація про можливості вибору кольору дана в розділі ColorSpec.

Приклади

Побудуємо синусоїдальну функцію для трьох різних меж зміни аргументу, використовуючи різні стилі ліній, кольору і маркери.
t = 0: pi/20: 2 * pi;
plot (t, sin (t), '-. r *')
hold on
plot (sin (t - pi / 2), '- mo')
plot (sin (t - pi), ': bs')
hold off

Побудуємо ще один графік, який ілюструє як можна задавати властивості ліній.
                                    plot (t, sin (2 * t), '-mo',...
'LineWidth', 2, ...
'MarkerEdgeColor', 'k',...
'MarkerFaceColor', [0.49 одна 0.63 ],...
'MarkerSize', 12)

Див також функції:
line, plot, patch, set, surface, і властивість LineStyleOrder координатних осей


[1] Ця термінологія не зовсім відповідає прийнятій в російсько-мовних виданнях.
Увага! Ви можете одночасно виконувати на MATLAB-е тільки одну функцію. Якщо MATLAB виконує деяку команду, то всі наступні введені команди запам'ятовуються і виконуються тільки при закінченні попередньої!
4. Введення декількох функцій в один рядок
Для введення декількох функцій в одну командний рядок, їх потрібно розділити крапкою з комою (;). Наприклад, запис трьох наступних функцій в одній командному рядку
format short; x = (1:10) '; logs = [x log10 (x)]
і натискання Enter призведе до виконання цих функцій зліва направо і до роздруківці таблиці десяткових логарифмів в межах від 1 до 10.
5. Введення довгих функцій
Якщо запис не поміщається на одному рядку, слід використовувати три точки, (...) для позначення того, що запис буде продовжена на наступному рядку; натиснути Enter для переходу до наступного рядка, і потім продовжити введення запису. Наприклад,
s = 1 - 1 / 2 + 1 / 3 - 1 / 4 + 1 / 5 - 1 / 6 + 1 / 7 ...
- 1 / 8 + 1 / 9 - 1 / 10 + 1 / 11 - 1 / 12;
Для записів з одинарними лапками, такими як рядки символів, лапки слід ста-вить на кожному рядку. Наприклад, вводячи наступну довгий рядок
headers = ['Author Last Name, Author First Name,' ...
'Author Middle Initial']
отримаємо
headers =
Author Last Name, Author First Name, Author Middle Initial
Максимальна кількість символів в одному рядку одно 4096.
6. Забарвлення і виділення синтаксису
Деякі записи з'являються в різних кольорах з метою полегшити пошук елементів, таких, наприклад, як парних поєднань if / else. Є такі основні варіанти:
  • При записі рядки з початковою лапками, вона пофарбована у ліловий колір. Коли ви закриваєте лапки, рядок стає коричнево-червоної.
  • При написанні ключових слів, таких як зарезервованих для програмування (наприклад, for, else, while і т.д.), а також три крапки (...), вони забарвлюються в синій колір. Слова, записані між зарезервованими набувають структурований-ний вигляд, тобто мають відступи, що полегшують читання тексту.
  • Подвійне натискання на початкову або кінцеву дужку (наприклад, звичайну, квадрат-ву [], або фігурну {}) призводить до селекції (фарбуванню) всіх символів між даною дужкою і її парою. При введенні кінцевої дужки відбувається кратковремен-ное висвічування відповідної початкової.
  • При надрукування символу відсотка (%), який в системі MATLAB є приз-наком початку рядка коментаря (ці рядки не виконуються), відповідний рядок забарвлюється в зелений колір.
  • При введенні команди звернення до операційної системи, які починаються з віск-ліцательного знака (!), Рядок забарвлюється у золотий колір.
  • Повідомлення про помилки мають червоний колір.
Можна змінити наведену стандартну забарвлення, запровадивши відповідні зміни в опції Preferences в меню робочого столу File. Там же передбачена можливість вибору шрифту і розміру символів.
7. Редагування командного рядка
Нижче наводяться деякі властивості системи MATLAB, що дають економію часу при введенні:
Властивості буффера обміну. ​​При роботі в командному вікні доцільно використовувати опції Cut (Вирізати), Copy (Копіювати), Paste (Вставити), Undo (Скасувати останньої дії), Redo (П овтореніе останньої дії) з меню Edit (Редагування), або відповідні кнопки інструментальної панелі (див. рис. 2). Деякі з цих опцій доступні також з контекстного меню командного вікна.
Властивості клавіші Tab (Табуляція). MATLAB автоматично завершує ім'я функції, змінної, назви файлу або властивості дескриптора графічного об'єкта (handle graphics property), якщо ви наберете відповідні перші кілька літер і натиснете кла-вишу Tab. Якщо це однозначно обумовлений ім'я, то воно буде автоматично завершено. Якщо ж дані букви входять у назву декількох функцій, то повторне натискання клавіші Tab викличе список   всіх можливих функцій. Наприклад, надрукуйте cos і НАЖ-міть Tab. Система MATLAB не відреагує, що означає наявність багатьох імен починаю-трудящих з cos. При повторному натисканні Tab MATLAB відобразить список всіх наявних в на-явності відповідних функцій:
cos cosh costfun
cos_tr cosint costs_march.
Виклик попередніх рядків. Використовуйте клавіші стрілок, табуляції і управління на клавіатури для повторного виклику, редагування та повторного використання функцій, кото-які ви ввели раніше. Припустимо, ви ввели помилково
rho = (1 + sqt (5)) / 2
При натисканні Enter MATLAB відповість:
Undefined function or variable 'sqt'.
(Невідома функція або змінна sqt),
оскільки ви неправильно ввели функцію sqrt (квадратний корінь). Замість того щоб передруковувати весь рядок, можна натиснути клавішу . Попередня рядок буде повторно відображена. Використовуючи клавішу можна навести курсор на потрібне положення і доба-вить відсутню букву r. Повторні натискання клавіші викличуть раннє введені будів-ки. Все що вводяться вами функції запам'ятовуються в буфері обміну. При цьому можна скористатись властивістю «інтелектуального повторного виклику» (smart recall) для повторного ви-поклику раніше запроваджених функцій, яке полягає в тому, що достатньо набрати лише перші кілька символів з назви необхідної функції. Наприклад, надрукувавши літери plo і натиснувши клавішу ми викличемо останню функцію, яка починається з plo. Дана властивість чутливо до вибору регістра.
Нижче наводиться повний список клавіш, які можна використовувати в командному вікні
Клавіші
Клавіші управління
Результат операції

Ctrl + p
Виклик попереднього рядка

Ctrl + n
Виклик наступного рядка.

Ctrl + b
Перехід на один символ тому.

Ctrl + f
Перехід на один символ вперед.
  Ctrl +
Ctrl + r
Перехід на одне слово праворуч.
  Ctrl +
Ctrl + l
Перехід на одне слово вліво.
   Home
Ctrl + a
Перехід на початок рядка.
   End
Ctrl + e
Перехід до кінця рядка.
   Esc
Ctrl + u
Очистити рядок.
Delete
Ctrl + d
Видалити символ після курсору.
   Backspace
Ctrl + h
Видалити символ перед курсором.
Ctrl + k
Видалити від курсора до кінця рядка.
Shift + home
Виділити до початку рядка.
Shift + end
Виділити до кінця рядка.

8. Очищення командного вікна
Для очищення командного вікна слід вибрати опцію Clear Command Window з меню Edit. Ця операція не призводить до очищення робочого простору, а тільки видаляє всі запи-сі з екрану монітора. Надалі ви можете використовувати всі властивості клавіш для пов-торного виклику введених раніше функцій.
Еквівалентна функція! Для очищення командного вікна можна скористатися функцією clc. Подібно clc, функція home переносить запрошення до введення системи MATLAB (>>) до верхнього лівого кута командного вікна, але при цьому вміст всього вікна не очищується і може бути прочитаний стандартний прийомами перегляду.
9. Придушення виведення результатів на екран
Якщо ви закінчуєте рядок крапкою з комою (;), то при натисканні Enter MATLAB виконан-вується завдання (програму), але не виводить результати на екран монітора. Це може бути осо-бливо корисним при генерації великих матриць. Наприклад, при введенні
A = magic (100);
і натисненні Enter MATLAB створює в робочому просторі матрицю A розміру 100х100, але не виводить її на екран.
10. Розбиття екранного виведення на сторінки
Якщо виводяться результати дуже довгі і не поміщаються в межах екрану, то висновок може бути занадто швидким для сприйняття (тобто рядки будуть бігти дуже швидко). У таких випадках можна скористатися функцією more. За замовчуванням функція more бло-кірована (вимкнена). Якщо ви надрукуєте more on, то MATLAB здійснює вивід на екран посторінково (за розміром екрану). Після перегляду першої сторінки слід натиснути на одну з наступних клавіш

Клавіша

Дія

Enter
Перехід до наступного рядка
Пробіл
Перехід до наступної сторінки
q
Зупинка виводу на екран

Посторінковий висновок можна блокувати введенням функції more off.
11. Вибір формату та інтервалу між рядками для числових даних

За замовчуванням, числове дані в командному вікні представляються як п'ятизначні чис-ла з фіксованою комою. Скориставшись опцією Preferences в меню File можна змінити формат виведення цих даних. При цьому формат виведення діє тільки на екран-ве представлення чисел, а не на саму процедуру обчислень або запам'ятовування даних в MATLAB-е.

Еквівалентна функція! Для вибору формату виводяться на екран числових даних можна скористатися функцією format. Дана функція має силу тільки в процесі поточного сеансу роботи, тобто при виході з MATLAB-а її дія анулюється і вос-відновлюється стандартне представлення даних.
Приклади форматів даних. Нижче дані кілька прикладів різних форматів двумер-ного вектора
x = [4 / 3 1.2345e-6]
формат short e
1.3333e +000 1.2345e-006
формат short
1.3333 0.0000
формат +
+ +
Повний опис допустимих форматів дається в довідках (Help) по даній функції. Допол-вальні можливості контролю висновку дають функції sprintf і fprintf.
Вибір інтервалу між рядками. Скориставшись опцією Preferences в меню File мо-жно також контролювати проміжок між рядками. Команда format compact пригнічуючи-ет порожні рядки, що дає можливість огляду більшої кількості інформації в ко-мандним вікні. Для повернення до порожніх рядках, які полегшують читання і сприйняття ін-формації на екрані, потрібно скористатися командою format loose.
12. Роздруківка змісту командного вікна
Для роздруківки змісту всього командного вікна слід вибрати Print з меню File. Для роздруківки лише частини тексту потрібно спершу виділити цю частину, а потім вибрати Print Selection в тому ж меню File.
13. Виконання програм
Виконання М-файлів. Для виконання М-файлів, тобто файлів які містять про-грами на мові MATLAB, слід скористатися процедурою, абсолютно аналогічної процедури виконання будь-якої іншої стандартної функції MATLAB-а, тобто необхідно надрукувати ім'я М-файлу в командному вікні і натиснути Enter. Для виведення на екран кожної функції в М-файлі в міру її виконання можна використовувати команду echo, тобто при введенні цієї команди MATLAB буде послідовно виводити на екран кожну функцію у вико-конується М-файлі.
Переривання виконання програми. Ви можете перервати виконання програми шляхом натискання Ctrl + c або Ctrl + Break в будь-який час.
Виконання зовнішніх програм. Знак оклику! Означає вихід з оболонки MATLAB-а і передачу частини командного рядка операційної системи. Дана властивість може бути корисним для виклику утиліт або інших програм без виходу з систе-ми MATLAB. Після виконання утиліт, операційна система повертає управління сис-темі MATLAB.
Відкриття М-файлу у вікні Редактора / відладчик. Для відкриття М-файлу слід виді-лити ім'я файлу або функції в командному вікні і потім, викликавши контекстне меню натисненням правої кнопки миші, вибрати опцію Open Selection. Відповідний М-файл буде відкритий у вікні Редактора / відладчик (Editor / Debugger).
Аналіз помилок. Якщо при виконанні М-файлу з'являється повідомлення про помилку, то потрібно підвести курсор до даного повідомлення і натиснути клавішу Enter. Відбудеться відкриття «нехорошого» M-файлу у вікні Редактора (Editor), причому файл буде «прокручено» до стро-ки, що містить помилку.
Збереження сеансу роботи. Для збереження в пам'яті сеансу роботи в системі MATLAB передбачена спеціальна функція diary (Щоденник). Ця команда створює копію вашого сеансу роботи в спеціальному файлі на диску, включаючи всі команди введення і відгуки системи MATLAB, але за винятком графіки. Ви можете потім переглядати та редагувати отриманий-ний текстовий файл використовуючи будь-який текстовий редактор. Наприклад, для створення на вашому диску файлу, названого допустимо sept23 («23 вересня»), який містив би всі введений-ні вами в цей день функції і відгуки системи MATLAB, слід ввести командне вікно функцію diary ('sept23.out'). Для припинення запису сеансу вводиться: diary ('off')
Примітка. У вікні Command History (Історія Команд) міститься запис всіх функцій, виконаних у поточному та попередній сеансах.
Отримання довідок (Getting Help)
Система MATLAB забезпечує виключно широкі можливості для отримання довідок по всім командам і функцій. Однак, на жаль, все це є лише на ан-глійском мовою і тому їх використання може викликати певні труднощі у не-підготовленого споживача. Серед важливих і корисних команд, які забезпечують швидкий доступ до довідок можна виділити три: help, helpwin і lookfor.
1. HELP. Оперативна довідка, що відображає текст у командному вікні.
Команда help, сама по собі, виводить на екран (у командний рядок) всі тематичні напрямки системи MATLAB. Кожне тематичне спрямування відповідає імені певного каталогу (директорії) в MATLAB-е (див. Додаток 1).
Команда help ('topic') або help topic , Де topic є певна директорія (наприклад, matlab \ polyfun), виводить список всіх функцій у даному каталозі.
Команда help fun, де fun - ім'я функції, виводить на екран довідку з даної функції, як вона записана у відповідному М-файлі.
2. HELPWIN. Забезпечує ті ж функції, що і help, але довідка виводиться в Вікно Перегляду Допомоги (Help Browser) (див. рис. 1).
3. LOOKFOR. Здійснює пошук у першому рядку коментарів по всіх М-файлів за заданим ключовим словом. Так, наприклад, lookfor XYZ здійснює пошук слова XYZ в першому рядку тексту довідки (HELP text) у всіх М-файлах на так званому шляху доступу MATLAB (MATLABPATH). Для всіх файлів де зустрічається це слово, команда lookfor виводить на екран назви файлів і перші рядки коментарів.
Робочий простір системи MATLAB
Робочий простір (workspace) MATLAB-а складається з безлічі змінних (званих масивами (array), створених під час сеансу роботи системи MATLAB і запам'ятати наних у пам'яті. Можна додавати нові змінні в робочий простір шляхом ис-користування функцій, які виконують М -файли, завантаженням запомненних раніше робочих про-просторів, або ж шляхом безпосереднього введення змінних. Так, наприклад, якщо ви надрукованими у командному вікні:
t = 0: pi / 4: 2 * pi; y = sin (t); z = 5;
то робочий простір буде містити дві змінні y і t, кожна з яких має дев'ять значень, і одну скалярну змінну z.
.
Вікно Перегляду Робочого Простору (Workspace Browser)
Для виконання операцій перегляду та зміни вмісту робочого простору зручно використовувати Вікно Перегляду Робочого Простору (ОПРП), хоча багато хто викорис-вуються їм функції також доступні і з командного рядка, шляхом застосування відповідних ціалу команд. Для відкриття ОПРП слід виконати одну з таких дій:
  • З меню View робочого столу MATLAB вибрати Workspace.
У Вікні Запуску (Launch Pad) натиснути двічі на Workspace.
Ввести команду workspace з командного рядка MATLAB-а.
При цьому отримуємо наступне вікно (для деякого конкретного набору змінних):

Рис. 3. Загальний вигляд Вікна Перегляду Робочого Простору

Перегляд поточного робочого простору. ОПРП показує ім'я кожної змінної, розмірність її масиву, розмір у байтах і її клас. Іконка в полі Name перед ім'ям каж-дой змінної вказує на її клас (класи змінних будуть розглянуті пізніше).
Еквівалентні функції! Команда who виводить у командне вікно список всіх змінних поточного робочого простору. Команда whos додає до списку змінних також інформацію про їхні розміри та класі. Наприклад, при введенні who система MATLAB відповідає:
Your variables are (вашими змінними є):

A M S v

а при введенні whos маємо:
Name Size Bytes Class
A 4x4 128 double array
M 8x1 2368 cell array
S 1x1 398 struct array
v 5x9 90 char array
Grand total is 286 elements using 2984 bytes
де в останньому рядку вказана загальна кількість елементів і кількість використовуваних байтів, і присутні наступні класи: double array - масив чисел подвоєною точності, cell array - масив комірок, struct array - масив структур, char array - масив символів.
Збереження поточного робочого простору. Робочий простір не зберігається між окремими сеансами роботи системи MATLAB. Коли ви виходите з MATLAB-а, його робочий простір очищається. Ви можете зберегти всі або частину змінних поточного робочого простору в так званих MAT-файлах (MAT-file), які є спеціально відведені-альних бінарними (двійковими) файлами даних. Надалі ви можете завантажити запомненние MAT-файли, як протягом того ж сеансу, так і в наступних сеансах, для повторного використання запомненних змінних.
Збереження всіх змінних. Для збереження всіх змінних робочого простанств із використанням ОПРП слід:
1. З меню File або контекстного меню вибрати Save Workspace As, або клацнути мишею по кнопці інструментальної лінійки ОПРП. Відкриється діалогове вікно Save.
2. Задати місце розташування та ім'я файлу (File name). MATLAB автоматично додасть розширення. Mat.
3. Клацнути Save.
Змінні робочого простанств при цьому запам'ятаються в MAT-файлі з обраним вами іменем.
Збереження частини змінних. Для цього треба:
1. Вибрати змінну в ОПРП. Для вибору декількох змінних слід використати клавіші Shift або Ctrl.
1. Викликати клацанням правої кнопки контекстне меню і вибрати Save Selection As. Подальші дії описані вище.
Еквівалентні функції! Для збереження змінних робочого простору можна ис-користувати команду save з вказівкою імені файлу куди ви хочете запам'ятати дані. Напри-заходів, команда save ('june10') запам'ятовує всі змінні робочого простору в бінарному файлі june10.mat. Якщо ви не ставите ім'я файлу, робоче простанство запам'ятовується у спеці-альному файлі під назвою matlab.mat в поточній робочій директорії. Ви можете задати які змінні зберігати, а також формат запам'ятовування даних, наприклад ascii. Так, ко-манда save 'june10' X Y зберігає в названому файлі тільки змінні X Y.
Завантаження запомненного робочого простору. Щоб дізнатися заздалегідь запомненной-нго робочого простору слід:
1. Клацнути на кнопку завантаження даних на інструментальній лінійці ОПРП, або щел-батіг правою кнопкою на ОПРП і вибрати в контекстному меню опцію Import Data. Відкрий-ється діалогове вікно Open (Відкрити).
2. Вибрати MAT-файл, який ви хочете завантажити і клацнути Open. Змінні і їх значення, запомненние раніше в даному MAT-файлі, будуть завантажені в поточний робочий простір системи MATLAB.
Еквівалентні функції! Функція load призначена для завантаження запомненного робо-чого простору. Наприклад, команда load ('june10') завантажує в робочий простір всі змінні з файлу june10.mat.
Примітка. Якщо в збереженому MAT-файлі june10 містяться змінні позначений-ні A, B, і C, то завантаження june10 поміщає ці змінні в робочий простір. Якщо змінні з цими іменами вже існують в робочому просторі, то вони замінюються новими змінними з june10.
Очищення змінних робочого простору. За допомогою ОПРП ви можете видалити лю-різновиди змінні з робочого простору. Для цього потрібно:
1. Вибрати змінну в ОПРП (або кілька перменних з використанням клавіш Shift або Ctrl). Для вибору всіх мінливих потрібно вибрати опцію Select All з меню Edit або контекстного меню.
2. Виконати будь-яке з перерахованих дій:
- Натиснути клавішу Delete.
- Вибрати опцію Delete з меню Edit.
- Клацнути по кнопці на інструментальній панелі ОПРП.
- Вибрати опцію Delete Selection з контекстного меню.
3. Якщо з'явитися діалогове вікно підтвердження, клацнути Yes.
Для видалення відразу всіх змінних потрібно вибрати опцію Clear Workspace з меню Edit або контекстного меню ОПРП.
Еквівалентна функція! Функція clear виконує ті ж функції. Наприклад, команда
clear AM
видаляє змінні A та M з робочого простору, а команда clear без позначення аргу-ментів видаляє всі змінні. Нарешті, команда clear all видаляє всі змінні і функ-ції, тобто повністю очищає робочий простір системи MATLAB
Перегляд основного (Base) робочого простору і робочого простору функцій з використанням стека (Stack). При виконанні М-файлів MATLAB призначає (виділяє) кожному файлу (функції) своє власне робочий простір, який називається робо-чим простором функції і не збігається з основними робочим простором системи MATLAB. При редагуванні виконуваних файлів ви можете переходити з основного робочого простору в робочий простір будь-якої виконуваної функції за допомогою поля Stack в ОПРП. Дане поле активізується тільки в режимі налагодження (більш докладно ця можливість буде расмотрев у подальшому).
Побудова графіків змінних. Ви можете побудувати графік будь-якої змінної з робочого простору. Для цього треба клацнути правою кнопкою миші на змінну в ОПРП, яку ви хочете відобразити графічно, і з контекстного меню вибрати опцію Graph Selection і далі вибрати тип графіка, який ви хочете побудувати. Відповідний графік з'явиться у вікні, спеціальному вікні подання гра-фіческой інформації (figure window). У дальнешем для стислості ці вікна буде називати графічними вікнами.

Перегляд і редагування масивів даних за допомогою

редактора Array Editor
Редактор Масиву Даних (РМД) Array Editor призначений для візуального перегляду і редагування одно-і двовимірних числових масивів, символьних рядків і осередків сім-вільних рядків.
Відкриття РМД. Для виклику РМД з ОПРП слід:
1. Виділити в ОПРП бажану змінну або змінні звичайним чином.
2. Клацнути по кнопці в інструментальній лінійці ОПРП або вибрати з контекст-ного меню опцію Open Selection. У випадку однієї перменной можна також обмежитися подвійним клацанням по вибраній змінної.
У результаті з'явиться таке вікно:
Зміна значень Зміна формату
елементів масиву представлення даних Зміна розмірностей масиву

Вибір різних змінних для перегляду
Рис.4. Загальний вигляд вікна редактора Масиву Даних
Повторення перерахованих вище кроків призведе до відкриття додаткових змінних в РМД. Доступ до кожної змінної здійснюється через ярлики внизу вікна РМД (див. рис. 4) або за допомогою меню Window.
Еквівалнтная функція! Для перегляду змісту змінної робочого простору досить надрукувати її ім'я в командному рядку. Так, наприклад, при введенні в командному рядку змінної m (див. рис. 4), MATLAB відповість
m =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Для відкриття РМД з необхідної змінної з командного рядка MATLAB-а, можна вос-користуватися функцією openvar з відповідної змінної в якості аргументу. На-приклад, при введенні openvar ('m') MATLAB відкриє РМД зі змінною m.
Зміна значень елементів в РМД. Для зміни значень елементів в РМД потрібно клацнути на ту клітинку таблиці, яку ви хочете змінити. Далі слід ввести нове значення елемента і натиснути Enter або клацнути по іншому осередку; відбудеться відповідними-ющее зміна. Для зміни розмірностей масиву, слід надрукувати нові значення для числа рядків і стовпців у полі Size. Якщо ви збільшуєте розмір, то нові рядки та стовпці додадуться до кінця таблиці і будуть заповнені нулями. При зменшенні розміру ви втратите дані - MATLAB просто видалить останні рядки і стовпці.
Шляхи доступу системи MATLAB
При пошуку М-файлів або інших файлів, що зберігаються у вашій файловій структурі, MATLAB використовує концепцію шляхів доступу (search path). Будь-який файл (функція), кото-рий ви хочете виконати в системі MATLAB повинен знаходиться в директорії, що знаходить-ся на шляхах доступу або в поточній директорії. За умовчанням, всі файли поставляються з MATLAB і відповідними пакетами прикладних програм фірми MathWorks вклю-влено в дорозі доступу. Якщо ви створюєте який-небудь файл, призначений для використан-ня системою MATLAB, необхідно включити директорію, що містить цей файл, в дорозі доступу системи MATLAB.
Увага! Якщо ви створюєте свій власний М-файл або вносите будь маю-щийся М-файл, поставлений з системою MATLAB, зберігайте їх в директорії, яка не перебуває на шляху $ matlabroot / toolbox / matlab, де $ matlabroot - коренева директорія системи MATLAB на вашому комп'ютері. Якщо ви зберігаєте будь-які свої файли в дирек-торії $ matlabroot / toolbox / matlab, вони будуть знищені при перевстановлення або установці нової версії MATLAB-а на вашому комп'ютері.
Суть концепції шляхів доступу. Всі використовувані вами файли розглядаються як зна-дящиеся на шляхах доступу системи MATLAB. Коли ви включаєте нову директорію в шляхи доступу, ви додаєте її до наявних шляхів. Піддиректорії (subdirectories) повинні бути додані в дорозі доступу явним чином, вони не включаються в дорозі доступу автоматично, при включенні їх батьківських директорій. Шляхи доступу системи MATLAB зберігаються у файлі pathdef.m. Порядок розташування директорій на шляхах доступу має істотне значення. Система MATLAB шукає будь-який об'єкт (змінну, функцію і т.д.), наприклад, названий foo, наступним чином. Якщо ви вводите foo в командному рядку, то система MATLAB виконує наступні дії:
1. Шукає foo як змінну.
2. Перевіряє, чи не є foo вбудованої функцією.
3. Шукає в поточній директорії файл названий foo.m.
4. Шукає по черзі у всіх директоріях на шляху доступу MATLAB файл foo.m.
Хоча насправді схема пошуку є більш складною, ця спрощена схема є-ється досить точною для звичайних М-файлів, з якими має справу споживач.
Порядок розташування директорій на шляхах доступу важливий саме тому, що можуть бути декілька файлів, що мають однакове ім'я. Коли MATLAB шукає таку функцію, він ви-набираються тільки першу функцію, що зустрілася на шляхах доступу; інші функції (фай-ли) виявляються в тіні і не можуть бути виконані. Для того щоб дізнатися яка функція виконується, тобто місце розташування даної функції у файловій структурі, можна вико-ти команду which FileName, де FileName - ім'я вибраної функції.
Перегляд і зміна шляхів доступу. Для перегляду та зміни шляхів доступу системи MATLAB   передбачено діалогове вікно Set Path, а також ряд еквівалентних команд (фу-нкцій), які можна виконати з командного рядка. Для відкриття зазначеного вікна ну-жно вибрати опцію Set Path з меню File робочого столу, або ввести команду pathtool з командного рядка MATLAB-а. Відкриється наступне діалогове вікно
При натисканні на ці кнопки відбуваються зміни
в шляхах доступу поточного сеансу, але ці шляхи доступу
не зберігаються автоматично дл майбутніх сеансів


Кнопки для зміни
шляхів доступу Директорії поточних шляхів доступу системи MATLAB

Натиснення кнопки приводить до збереження змін для майбутніх сеансів роботи
Рис. 5. Діалогової вікно Set Path для модифікації шляхів доступу
На рис. 5 маємо такі кнопки:

Add Folder ... - Додати директорію (папку).

Add with Subfolders ... - Додати директорію з піддиректоріями.
Move to Top - Перенести директорію в початок шляху.
Move Up - Перенести директорію на один крок нагору.
Remove - Видалити директорію.                 
Move Down - Перенести директорію на один крок вниз.
Move to Bottom - Перенести директорію в кінець шляху.
Default - Відновити вихідні шляхи доступу (за замовчуванням).
Призначення даних кнопок зрозуміло з їх назв.

Операції з файлами

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

Для зміни поточної директорії з цього поля, потрібно виконати одну з наступних дій:
надрукувати в дане поле шлях до нової поточної директорії.
Клацнути на правій кнопці зі стрілкою, що відкриє список раніше використаних робо-чих директорій, і вибрати з них бажану.
Клацнути на кнопку (...) (див. рис. 2) для вибору нової директорії.
Вікно Перегляду Поточного Каталогу (Current Directory Browser). Для пошуку, просмот-ра, відкривання і введення змін в директоріях системи MATLAB можна скористатися Вікном Перегляду Поточного Каталогу (ОВТК). Всі основні функції даного вікна можна також виконати задаючи відповідні команди з командного рядка системи MATLAB. Якщо ОВТК не присутня в робочому столі MATLAB-а, то його можна відкрити вибором опції Current Directory в меню View, або ж ввівши команду filebrowser з коман-дного вікна (Command Window). При цьому з'явиться наступне вікно
Дане поле дозволяє зробити швидкий
перегляд і зміна директорій
Клацнувши по кнопці «бінокль» можна досліджувати вміст
будь-якого М-файлу (операція пошуку по заданих символів)

Рис. 6. Вікно перегляду поточного каталогу
Подвійний клік по будь-якого виділеного файлу відкриє його вміст у відповідному вікні Редактора / відладчик. У нижній частині ОВТК (див. рис. 6) показана частина довідки (help) для виділеного файлу.
Зміна нинішньої директорії і перегляд її змісту у ОВТК. Для зміни поточної щей директорії з ОВТК можна скористатися полем Current Directory цього вікна, з-вершенно аналогічно тому, як це було описано вище.
Еквівалентні функції! Команда dir виводить у командне вікно весь вміст поточної щей директорії або будь-який інший директорії, заданої як аргумент функції dir. Кома-нда what діє аналогічно, але виводить тільки ті файли, які відносяться до системи MATLAB. Команда which FileName, де FileName - ім'я файлу, виводить шлях доступу до даного файлу.
ОВТК дозволяє також зробити будь-які додавання директорій до шляхів доступу системи MATLAB, а також створювати, копіювати, перейменовувати директорії і т.д. (Див. Керуючи-ство Користувача).
Пошук і заміна вмісту файлів. З ОВТК можна здійснити пошук будь-якої заданої рядка символів у змісті файлу. Якщо ж файл відкритий у вікні Редактора / відладчик, то можна також і замінити задану рядок на іншу.
Пошук заданого рядка в межах файлу (файлів). Для пошуку заданої рядки слід:
1. Клацнути по кнопці    інструментальної панелі ОВТК (рис. 6). З'явиться наступне діалогове вікно "Знайти і Замінити» (Find & Replace):

 
2. Для знаходження всіх випадків наявності необхідної рядки у файлах слід:
- Надрукувати рядок в полі Find what.
- Вибрати директорію пошуку в полі Look in, або просто безпосередньо надрукувати ім'я директорії в даному полі.
- Обмежити пошук вибором опцій Match case (Враховувати регістр) і Whole word (Слово цілком).
- Вибрати опцію Subdirectories (Піддиректорії), якщо ви хочете також переглядати і файли в піддиректоріях.
3. Клацнути по кнопці Find.
Результат пошуку при цьому буде відображений в нижній частині далогового вікна Find & Replace як це показано на наступному малюнку. Цей результат включає назву файлу, номер з-Відповідаю рядки і вміст цього рядка.


Подвійний клацання по файлу призведе до
його відкриття
Кнопка закриття вікна
Результати попередніх операцій пошуку результатів пошуку
доступні через ці ярлики
4. Для відкриття будь-якого з М-файлів у списку результатів пошуку потрібно виконати одну з наведених нижче дій:
- Двічі клацнути по файлу.
- Виділити файл і натиснути клавішу Enter.
- Клацнути правою кнопкою по файлу і вибрати опцію Open з контекстного меню.
Відповідний файл буде відкрито в редакторі / відладчик, причому він буде «прокручено» до того рядка, яка містить результат пошуку.
5. Якщо ви до того проводили інший пошук (пошуки), то всі результати попередніх пошуків будуть доступні через «ярлики» внизу поточного списку результатів пошуку (див. рис.).
Заміна вказаного рядка в межах файлу. Після пошуку заданої рядка в межах фай-ла, ви можете автоматично замінити цей рядок на будь-яку іншу. Для цього треба:
1. Відкрити М-файл в вікні Редактора / відладчик системи MATLAB Editor. При цьому потрібно переконатися, що даний файл є поточним у вікні Редактора / відладчик.
2. Вибрати в полі Look in у діалоговому вікні Find & Replace ім'я того файлу, в якому ви хочете замінити рядок. Кнопка Replace (Замінити) при цьому активізується.
3. Вкарбуються у поле Replace with текст, на який ви хочете замінити обрану рядок.
4. Клацнути Replace для заміни рядка символів у вибраному рядку файлу, або ж клац-нуть по кнопці Replace All, якщо ви хочете замінити всі знайдені збіги в поточному файлі.
Текст буде замінений.
5. Для збереження змін потрібно вибрати опцію Save з меню File у вікні Редактора / Від-ладчіка.

Дуальність (подвійність) команд і функцій

Команди системи MATLAB це вирази виду load або help. Багато команд допускають модифікацію за рахунок визначення операндів, наприклад:
load August17.dat
help magic
type rank.
Альтернативний спосіб введення подібних операндів у команди полягає в представленні їх у вигляді символьних рядків як аргументи функцій.
load ('August17.dat')
help ('magic')
type ('rank')
У цьому полягає дуальність команд / функцій системи MATLAB. Будь-яка команда у формі
command argument
може також бути записана у функціональній формі
command ('argument')
Перевага функціональної форми запису проявляється коли символьний аргумент формується машиною програмно, з ряду різних шматків. Наприклад, наступний приклад завантажує в робочий простір змінні з 31-го МАТ-файлу під назвами August1.dat, August2.dat, і т.д.
                                               
                                                  for d = 1:31
s = ['August' int2str (d) ". dat ']
load (s)
end
Тут використана функція int2str, яка перетворює цілі числа в рядок символів, що допомагає сконструювати назва файлу, а також використовуються квадратні дужки для об'єднання трьох символьних змінних в одне.
Дії над матрицями в системі MATLAB
Матриця є двовимірним масивом дійсних або комплексних чисел. Лінійна алгебра і теорія матриць визначають безліч операцій над матрицями, які непо-редньо підтримуються (тобто виконуються як стандартні операції) в MATLAB-е. Зокрема, сюди входять всі елементарні дії над матрицями, рішення систем линів-них рівнянь, знаходження власних значень і векторів, а також сингулярних чисел і т.д. Нижче коротко розглянуті дії над матрицями в системі MATLAB.
Формування матриць у системі MATLAB
У подальшому для зручності будемо вважати терміни матриця і масив еквівалентними. Бо-леї точно, матриця є двовимірний прямокутний масив з дійсних або комплек-сних чисел, який характеризує деякий лінійне перетворення. У MATLAB-е ма-ється безліч вбудованих функцій, які формують (генерують) різні типи ма-тріц. Скористаємося двома з них для формування пари матриць розміру 3-by-3, які будуть використовуватися в подальшому в якості прикладів. Перший приклад представляє симетричну матрицю Паскаля. Якщо ввести команду
A = pascal (3)
то система відповість
A =
1 1 1
1 2 3
1 3 6
Другий приклад представляє несиметричну матрицю, відому під назвою «волшеб-ний квадрат» (magic square):
B = magic (3)
                                                                B =
8 1 6
3 5 7
4 9 2
Ще один приклад використання стандартної матриці представляє собою прямокутну 3х2 матрицю випадкових цілих чисел:
C = fix (10 * rand (3,2))
                                                              
C =
9 квітень
2 серпня
6 7.
  Тут функція rand (3,2) генерує 3х2 матрицю рівномірно розподілених випадкових чисел в діапазоні від 0 до 1, а функція fix здійснює округлення шляхом відкидання дробової частини.
Вектор-стовпець є матриця розміру mх1 matrix, вектор-рядок - матриця розміру 1х n, а скаляр є матриця розміру 1х1. Об'єднання окремих чисел в масиви здійснюється за допомогою квадратних дужок, причому окремі рядки розділяються крапкою з комою, а змінні в кожному рядку - комою або пробілом (кількість пробілів може бути будь-яким). Вирази
u = [3; 1; 4]
v = [2 0 -1]
s = 7
дають вектор-стовпець u, вектор-рядок v і скаляр s (ці вектори також будуть використовуватися надалі при вирішенні прикладів):
                                                                 u =
3
1
4
                                                                 v =
2 0 -1
                                                                 s =
7

Додавання і віднімання матриць

Додавання і віднімання матриць визначається як і для масивів, тобто поелементно. Ці операції вимагають щоб обидві матриці мали однакову розмірність, або одна з них була скаляром (в останньому випадку MATLAB додає (або вичитує) даний скаляр з усіх елементів матриці). Якщо розмірності матриць не збігаються, в командне вікно видається з-спілкування про помилку (червоним кольором)
Error using ==> +
Matrix dimensions must agree.

Векторний добуток і транспонування матриць

Вектор-рядок та вектор-стовпець можуть бути перемножити в будь-якому порядку (оператор розумно-вання * розташований на верхньому регістрі клавіші з цифрою 8). Результатом буде або ска-ляр (внутрішнє твір) або матриця (зовнішнє твір). Для наведених вище векторів v і u маємо:
x = v * u
                                                                 x =
2
X = u * v

X =

6 0 -3
2 0 -1
8 0 -4
Для дійсних матриць, операція транспонування змінює взаємне розташування елементів aij aji, симетричних щодо головної діагоналі. Для позначення транс-понірованія MATLAB використовує одиночну лапки (апостроф) ('). Для нашої симетрії-чної матриці Паскаля A '= A. Однак матриця В не є симетричною і тому:

X = B '

                                                               X =
8 3 4
1 5 9
6 7 2
Транспонування перетворює вектор-рядок у вектор-стовпець і навпаки. Якщо x та y обидва яв-ляють дійсними векторами, то твір x * y не визначено, але обидва вироблена-дення x '* y і y' * x дають один і той же скаляр. Це співвідношення використовується так часто, що має три різних імені: скалярний твір, внутрішнє твір і точкове твір.
Для комплексного вектора або матриці, z, величина z 'обозначет комплексно-поєднане транспонування. У MATLAB-е передбачені також поелементні операції над елементом нтами масивів. Ознакою поелементних операцій служить крапка після позначення пере-змінної. Так, транспонування елементів матриці z як масиву чисел позначається z. ', за аналогією з іншими операціями на масивами чисел. Наприклад, якщо
z = [1 +2 i 3 +4 i]
то
                                                                z '=
1-2 i
3-4 i
тоді як z. 'є
z. ' =
1 +2 i
3 +4 i
Для комплексних векторів, два скалярні твори x '* y і y' * x комплексно поєднані, а скалярний добуток x '* x комплексного вектора з самим собою є дійсне число.

Твір матриць

Для твору двох сумісних А і В матриць в MATLAB-е достатньо записати в ко-мандним рядку С = А * В. MATLAB самостійно перевірить сумісність розмірностей матриць і видасть результат. Якщо матриці несумісні, видається повідомлення про помилку:
Error using ==> *
Inner matrix dimensions must agree.
Індексування (Subscripts)
Для короткого розгляду деяких основних понять, пов'язаних з індексацією дво-мірних масивів (матриць), введемо «чарівну» матрицю 4-го порядку:

F = magic (4)

F =

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Елемент у i-ої рядку і j-му стовпці матриці F позначається через F (i, j). Наприклад, F (4,2) є число в четвертому рядку і другому стовпчику. Для нашого чарівного квадрата, F (4,2) є 14. Таким чином, можна обчислити суму елементів четвертого стовпця матриці F, надрукувавши
F (1,4) + F (2,4) + F (3,4) + F (4,4)
Це дає відповідь
ans =
34
але, як ми побачимо надалі, не є найбільш елегантним способом підсумовування елементів одного стовпця.
Є також можливість звернення до елементів матриці за допомогою одного індексу, F (k). Це звичайний спосіб звернення до елементів векторів (рядків або стовпців). Але в MATLAB-е такий спосіб індексування можна застосувати і до двовимірним (у загальному випадку - багатовимірним) матрицями, так як система MATLAB зберігає всі багатовимірні масиви чи-сів у вигляді одного довгого вектора-стовпця, сформованого з шпальт вихідної Матрі-ці. Так, для нашого чарівного квадрата, F (8) є інший спосіб звернення до чення 14 заховану в F (4, 2).
Якщо ви спробуєте використовувати елемент, що знаходиться поза розмірів матриці, це приве-дет до повідомлення про помилку
t = F (4,5)

Index exceeds matrix dimensions

(Індекс перевищує розмірність матриці)
З іншого боку, якщо ви спробуєте запам'ятати будь-яке число поза розмірів матриці, розмір буде відповідним чином збільшено збільшений, щоб прийняти нове значення.
X = A;
X (4,5) = 17
X =
16 3 2 ​​13 0
5 0 11 8 0
9 6 7 12 0
4 15 14 1 17

Двокрапка (Colon)

Двокрапка,:, є одним з найбільш важливих операторів MATLAB-а. Воно зустрічається в кількох різних формах. Вираз 1:10 є вектор-рядок, що містить целвие числа від 1 до 10:
1 2 3 4 5 6 7 8 9 10
Щоб отримати непоодинокі прирощення, потрібно задати приріст. Наприклад,
100: -7: 50
є
100 93 86 79 72 65 58 51
а
0: pi / 4: pi
є
0 0.7854 1.5708 2.3562 3.1416
Індекси, що містять двокрапки, допускають звернення до частин матриць. Так, вираз
F (1: k, j)
дає перші k елементів j-го стовпця матриці F. Тобто,
sum (F (1:4, 4))
обчислює, як і у прикладі вище, суму елементів 4-го стовпця. Але є ще кращий шлях. Двокрапка саме по собі означає звернення до всіх елементів рядка або стовпця матриці, а зарезервоване слово end є звернення до останніх рядку або стовпцю матриці (у випадку векторів-рядків або стовпців слово end є звернення до останнього елемента вектора-ра). Значить,
sum (F (:, end))
обчислює суму елементів останнього стовпця матриці F. Відповідь: ans = 34. Чому маги-чна сума для чарівного квадрата 4 х 4 дорівнює 34? Справа в тому, що якщо цілі числа від 1 до 16 (кількість елементів матриці розміру 4 х 4) впорядковані в чотири групи з рівними сум-мами елементів, ця сума повинна бути дорівнює
sum (1:16) / 4
що, звичайно, дає ans = 34.
Одинична матриця, нульова матриці і матриця з одиниць.
Двовимірні масиви випадкових чисел
Одинична матриця, тобто матриця має одиниці на головній діагоналі і нульові ос-тальне елементи, в MATLAB-е позначається eye, причому eye (n) є одинична квадратна матриця розміру nxn, eye (m, n) - прямокутна одинична матриця розміру mxn, а eye (size (A)) є одинична матриця, що має розмірність матриці A. Наприклад,
I = eye (3)
I =
1 0 0
0 1 0
0 0 1

I = eye (3,5)
I =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
I = eye (4,2)

I =

1 0
0 1
0 0
0 0
Нульова матриця, тобто матриця складається з нулів (масив нулів), в MATLAB-е обоз-почалася zeros, причому zeros (n) є нульова квадратна матриця розміру nxn, zeros (m, n) - прямокутна нульова матриця розміру mxn, а zeros (size (A)) є нульова матриця маю-щая розмірність матриці A.
Z = zeros (2,4)
                                                          
                                                             Z =
0 0 0 0
0 0 0 0
Нарешті, матриця складається з одиниць (масив одиниць), в MATLAB-е позначається ones, причому ones (n) є квадратний масив одиниць розміру nxn, ones (m, n) - прямокутний масив одиниць розміру mxn, а ones (size (A) ) є масив одиниць, що має розмірність матриці A.
S = 5 * ones (3, 3)
                                                               S =
5 5 5
5 5 5
5 5 5
Аналогічно, функція rand дає можливість сформувати відповідні масиви слу-чайних чисел в діапазоні від 0 до 1, розподілених по рівномірному закону, а функція randn - за нормальним законом.
N = fix (10 * rand (1,10))

N =

4 9 4 4 8 5 2 6 8 0
R = randn (4,4)
            
R =
1.0668 0.2944 -0.6918 -1.4410
0.0593 -1.3362 0.8580 0.5711
-0.0956 0.7143 1.2540 -0.3999
-0.8323 1.6236 -1.5937 0.6900

Рішення систем лінійних рівнянь

Однією з найважливіших завдань в технічних додатках і розрахунках є завдання вирішення систем лінійних рівнянь. У матричних позначеннях, дана задача може бути сформу-лювати наступним чином. При заданих двох матрицях A and B, чи існує така єдина матриця X, що AX = B або XA = B?
Для наочності розглянемо одновимірний приклад. Чи має рівняння
7x = 21
єдине рішення? Відповідь, зрозуміло, так. Це рівняння має єдине рішення x = 3. Рішення може бути легко отримано звичайним поділом.
x = 21 / 7 = 3
Рішення при цьому зазвичай не складається у визначенні зворотної величини від числа 7 (тобто ве-личини 7 -1 = 0.142857 ...), і наступним множенням числа 7 -1 на число 21. Це було б більш трудомістка й, якщо число 7 -1 представлено кінцевим числом цифр (розрядів), менш точно. Аналогічні міркування можна застосувати й до систем лінійних алгебраїчних рівнянь з більш ніж однієї невідомої; MATLAB вирішує такі рівняння без обчислений-ня оберненої матриці. Хоча це і не є стандартним математичним позначенням, система MATLAB використовує термінологію, пов'язану із звичайним поділом в одновимірному випадку, для опису загального випадку рішення спільної системи кількох лінійних рівнянь. Два символи поділу / (коса риса (англійською - slash)) і \ (зворотна коса че-рота (backslash)) використовуються у двох випадках, коли невідома матриця з'являється зліва чи справа від матриці коефіцієнтів:
X = A \ B позначає рішення матричного рівняння AX = B
X = B / A позначає рішення матричного рівняння XA = B.
Ви можете уявляти собі це як процес "розподілу" обох частин рівняння AX = B або XA = B на A. Матриця коефіцієнтів A завжди знаходиться в «знаменнику». Умова сов-оперативної сумісності розмірностей для X = A \ B вимагає щоб дві матриці A і B мали однакове число рядків. Рішення X тоді має таке ж число стовпців як і B, а число її рядків буде дорівнює числу стовпців A. Для X = B / A, рядки та стовпці міняються ролями. На практиці, чи-нійним рівняння у вигляді AX = B зустрічаються частіше, ніж у вигляді XA = B. Слідчий-но, зворотна похила риса \ використовується частіше, ніж пряма /. Тому, в залишати-чої частині даного розділу ми обмежимося розглядом оператора \; відповідні властивості оператора / можна вивести з тотожності
(B / A) '= ​​(A' \ B ')
У загальному випадку не потрібно, щоб матриця коефіцієнтів A була б квадратної. Якщо A має розмір mхn, то можливі три випадки:
  1. m = n Квадратна система. Шукається точне рішення.
  2. m> n перевизначення система. Шукається рішення методом найменших квадратів.
  3. m <n недовизначеність система. Знаходиться базове рішення з найбільшим
                  числом m ненульових компонент.
Оператор \ використовує різні алгоритми для розв'язання систем лінійних рівнянь з раз-ними типами матриць коефіцієнтів. Різні випадки, які діагностуються автома-тично за типом матриці коефіцієнтів, включають:
Перестановки трикутних матриць
Симетричні, позитивно певні матриці
Квадратні невироджені матриці
Прямокутні, перевизначені системи
Прямокутні, недовизначеність системи

Квадратні системи

Найбільш часто зустрічається ситуацією є квадратна матриця коефіцієнтів A і одновимірний вектор-стовпець b праворуч, тобто Ax = b. Рішення x = A \ b має при цьому той же ра-розмірах, що і вектор b. Наприклад,
x = A \ u
                                                             
                                                                    x =
10
-12
5
де матриця А є наведена вище матриця Паскаля. Легко переконатися, що A * x точно дорівнює вектору u (чисельні значення цього вектора дані вище).
Якщо A і B є квадратними і мають однаковий розмір, то X = A \ B має той же ра-розмірах, наприклад

X = A \ B

                                                             X =
19 -3 -1
-17 4 13
6 0 -6
Легко переконатися, що A * X точно дорівнює B.
Обидва цих прикладу мають точне рішення у вигляді цілих чисел. Це пов'язано з тим, що в якості-стве матриці коефіцієнтів була обрана матриця Паскаля pascal (3), чий детермінант дорівнює одиниці. Далі будуть розглянуті приклади впливу помилок округлення, виникаю-щих в більш реальних системах.
Квадратна матриця A є сингулярної, якщо її стовпці не є лінійно незалежні сімимі. Якщо A - Сингулярна, то рішення AX = B або не існує, або не є єдиний-ментом. Оператор \, A \ B, видає попередження, якщо матриця A близька до сингулярної і повідомлення про помилку, якщо визначено рівність нулю детермінанта Матрі-ці А.

Перевизначені системи

Перевизначені системи спільних лінійних рівнянь часто зустрічаються в задачах апроксимації експериментальних даних за допомогою різних емпіричних кривих. Розглянемо наступний гіпотетичний приклад. Величина y вимірюється при різних зна-ченіях часу t, що дає наступні результати
t y
0.0 0.82
0.3 0.72
0.8 0.63
1.1 0.60
1.6 0.55
2.3 0.50
Ці дані можуть бути введені в MATLAB за допомогою виразів:
t = [0 .3 .8 1.1 1.6 2.3] ';
y = [0.82 0.72 0.63 0.60 0.55 0.50] ';
Дані можуть бути апроксимовані за допомогою спадної експоненційної функ-ції.
y (t) = c 1 + c 2 e-t
Це рівняння показує, що вектор y може бути представлений у вигляді лінійної комбінації-ції двох векторів, один з яких є постійним вектором, що містить всі одини-ці, а другий вектор має компоненти e-t. Невідомі коефіцієнти c 1 і c 2 можуть бути знайдені підгонкою кривих за методом найменших квадратів, яка заснована на мінімі-зації суми квадратів відхилень експериментальних даних від моделі. Ми маємо шість рівнянь з двома невідомими, представленими 6х2 матрицею
E = [ones (size (t)) exp (- t)]
E =
1.0000 1.0000
1.0000 0.7408
1.0000 0.4493
1.0000 0.3329
1.0000 0.2019
1.0000 0.1003
Рішення методом найменших квадратів знаходиться за допомогою оператора \:
c = E \ y
                                                                 c =
0.4760
0.3413
Іншими словами, підгонка методом найменших квадратів дає
y (t) = 0.476 + 0.3413 e - t
Наступні вирази оцінюють модель при рівномірно розподілених моментах време-ні (з кроком 0.1), а потім будують графік разом з результатами експериментальних даних.
                                                       T = (0: 0.1: 2.5) ';
Y = [ones (size (T)) exp (-T)] * c;
plot (T, Y, '-', t, y, 'o')

Можна бачити, що значення E * c не зовсім точно збігаються зі значеннями експери-них даних y, але ці відхилення можуть бути порівнянні з помилками вимірювань.
Прямокутна матриця A називається матрицею неповного рангу, якщо її стовпці лінійно-незалежні. Якщо матриця A має неповний ранг, то рішення AX = B не є единст-венним. Оператор \ при цьому видає попередження і визначає основне рішення, яке дає мінімально можливе число ненульових рішень.

Недовизначеність системи

Недовизначеність системи лінійних рівнянь містять більше невідомих ніж рів-нений. Коли вони супроводжуються додатковими обмеженнями, то стають сферою вивчення лінійного програмування. Сам по собі, оператор \ працює тільки з системою без обмежень. При цьому рішення ніколи не буває єдиним. MATLAB знаходить ос-новное рішення, яке містить щонайменше m ненульових компонент (де m - число рівнянь), але навіть це рішення може бути не єдиним. Нижче наводиться приклад, де вихідні дані генеруються випадковим чином.
R = fix (10 * rand (2,4))
                                                           R =
6 8 7 3
3 5 4 1
b = fix (10 * rand (2,1))
b =
1
2
Система рівнянь Rx = b містить два рівняння з чотирма невідомими. Оскільки матриця коефіцієнтів R містить невеликі за величиною цілі числа, доцільно представити рішення у форматі rational (у вигляді відношення двох цілих чисел). Приватне ре-шення представлене в зазначеному форматі є:
p = R \ b
                                                                      p =
0
5 / 7
0
-11 / 7
Одне з ненульових рішень є p (2), тому що другий стовпець матриці R має най-більшу норму. Друга ненульова компонента є p (4) оскільки четвертий стовпець матриці R стає домінуючим після виключення другого стовпця (рішення зна-диться методом QR-факторизації з вибором опорного стовпця).

Зворотні матриці і детермінанти

Якщо матриця А є квадратною і невиродженої, рівняння AX = I і XA = I мають однакове рішення X. Це рішення називається матрицею зворотної до A, позначається через A -1 і обчислюється за допомогою функції inv. Поняття детермінанта (визначника) матриці корисно при теоретичних викладках та деяких типах символьних обчислень, але його масштабування і неминучі помилки округлення роблять його не таким привабливим при числових обчисленнях. Тим не менш, якщо це потрібно, функція det обчислює визначник квадратної матриці. Наприклад,
A = pascal (3)
A =
1 1 1
1 2 3
1 3 6
d = det (A)
X = inv (A)
d =
1
X =
3 -3 1
-3 5 -2
1 -2 1
Знову таки, оскільки A є симетричною матрицею цілих чисел і має одиничний визначник, те ж саме справедливо і для зворотнього матриці. З іншого боку, для
B = magic (3)
                                                          B =
8 1 6
3 5 7
4 9 2
d = det (B)
X = inv (B)
d =
-360
X =
0.1472 -0.1444 0.0639
-0.0611 0.0222 0.1056
-0.0194 0.1889 -0.1028
Уважне вивчення елементів матриці X, або використання формату rational, покази-кість, що вони є цілими числами, розділеними на 360.
Якщо матриця A є квадратною і несінгулярной, то, нехтуючи помилками округ-ня, вираз X = inv (A) * B теоретично означає те ж, що і X = A \ B, а Y = B * inv (A) теоретично є те ж, що і Y = B / A. Проте обчислення включають оператори \ і / більше кращі, оскільки потребують менше робочого часу, меншою пам'яті і мають кращі властивості з точки зору визначення помилок.

Псевдообернена матриці

Прямокутні матриці не мають детермінантів і зворотних матриць. Для таких матриць принаймні одне з рівнянь AX = I або XA = I не має рішення. Частково цей про-бел заповнюється так званої псевдообернених матриць Мура-Пенроуза, або просто псевдообернених матриць, яка обчислюється за допомогою функції pinv. На практиці необхідність у цій операції зустрічається досить рідко. Бажаючі можуть завжди обра-титься до відповідних довідковим посібникам.

Ступені матриць і матричні експоненти

Позитивні цілі ступеня

Якщо А є деяка квадратна матриця, а р - позитивне ціле число, то A ^ p еквівалентна множенню A на себе р разів.

X = A ^ 2

                                                         
                                                            X =
3 червня 1910
14 червня 1925
25 жовтня 1946
Негативні і дробові ступеня
Якщо А є квадратною і невиродженої, то A ^ (-p) еквівалентно множенню inv (A) на себе p разів.
Y = B ^ (-3)
                                                   Y =
0.0053 -0.0068 0.0018
-0.0034 0.0001 0.0036
-0.0016 0.0070 -0.0051
Дробові ступеня, наприклад A ^ (2 / 3), також допускаються; результати при цьому залежать від ра-спределение власних значень матриці А.

Поелементне зведення в ступінь

Оператор. ^ (З точкою!) Здійснює поелементне зведення в ступінь. Наприклад,

X = A. ^ 2

A =
1 1 1
1 4 9
1 вересня 1936

Обчислення кореня квадратного з матриці і матричної експоненти

Для невироджених квадратних матриць А функція sqrtm обчислює головне значення квад-ратного кореня, тобто якщо X = sqrtm (A), то X * X = A. Буква m в sqrtm означає, що вико-вується матрична операція. Це відрізняє дану функцію від sqrt (A), яка, подібно A. ^ (1 / 2) (зверніть увагу на точку!), Виконує операцію ізвленченія кореня поелемен-тно.
Система звичайних лінійних диференціальних рівнянь першого порядку може бути записана у вигляді
dx / dt = Ax
де x = x (t) є векторна функція від t, а A є постійна матриця не залежить від t.
Рішення даної системи може бути виражена у вигляді матричної експоненти.
x (t) = ℮ At x (0)
Функція expm (A) обчислює матричну експоненту. Розглянемо приклад системи диффер-нціальних рівнянь з наступного 3х3 матрицею коефіцієнтів
A =
0 -6 -1
6 2 -16
-5 20 -10
і початковими умовами x (0)
x0 = [1 1 1] '.
Використання матричної експоненти для обчислення рішення диференціального рівняння-ня в 101 точці з кроком 0.01 на інтервалі 0 ≤ t ≤ 1 записується у вигляді
                                                                  X = [];
for t = 0: 0.01: 1
                          X = [X expm (t * A) * x0];
end
Тривимірний графік вирішення у фазовому просторі може бути отриманий за допомогою спе-ціальної функції
plot3 (X (1,:), X (2,:), X (3,:), '-o')
Рішення має вигляд спіральної функції збіжної до початку координат (див. мал. Нижче). Та-де рішення обумовлене комплексними власними значеннями матриці коефіцієнтів А.

Власні значення та власні вектори

Власним значенням і власним вектором квадратної матриці А називаються ска-ляр λ і вектор v, що задовольняють умові
Av = λv

Діагональна декомпозиція

Маючи діагональну матрицю Λ, складену з власних значень λ матриці А і мат-Ріцу V, складену з відповідних власних векторів v, можна записати

AV = VΛ

Якщо матриця V несінгулярная, на підставі даного виразу отримуємо спектральне розкладання матриці А
А = V ΛV -1
Непоганий приклад використання спектрального розкладання дає розглянута вище матриця коефіцієнтів лінійного диференціального рівняння. Введення вираження
lambda = eig (A)
дає наступний вектор-стовпець власних значень (два з них є комплексно-спряженими)
lambda =
-3.0710
-2.4645 + 17.6008i
-2.4645 - 17.6008i
Дійсні частини всіх власні значення є негативними, що забезпечують-ється стійкість процесів в системі. Ненульові уявні частини комплексно-сполучених власних значень обумовлюють коливальний характер перехідних процесів.
При двох вихідних аргументах, функція eig обчислює також власні вектори і видав-ет власні значення у вигляді діагональної матриці
.
[V, D] = eig (A)
                             
V =
-0.8326 0.2003 - 0.2003 0.1394i + 0.1394i
-0.3553 -0.2110 - 0.6447i -0.2110 + 0.6447i
-0.4248 -0.6930 -0.6930
D =
-3.0710 0 0
0 -2.4645 +17.6008 i 0
0 0-2.4645-17.6008i
Перший власний вектор (перший стовпець матриці V) є дійсним, а два інших є комплексно-спряженими. Всі три вектори є нормалізованими по довжині, тобто їх Евклідова норма norm (v, 2), дорівнює одиниці.
Матриця V * D * inv (V), яка в більш стислій формі може бути записана як V * D / V, дорівнює, в межах похибок округлення, матриці А. Аналогічно, inv (V) * A * V, або V \ A * V, рав-ну, в межах похибок округлення, матриці D.

Дефектні матриці

Деякі матриці не мають спектрального розкладання. Такі матриці називаються дефек-вими або не діагоналізіруемимі. Наприклад, нехай матриця А має вигляд
A =
6 грудня 1919
-9 -20 -33
4 Вересень 1915
Для цієї матриці введення [V, D] = eig (A) дає
V =
-0.4741 -0.4082 -0.4082
0.8127 0.8165 0.8165
-0.3386 -0.4082 -0.4082
D =
-1.0000 0 0
0 1.0000 0
0 0 1.0000
Тут є два позитивних одиничних кратних власних значень. Другий і третій стовпчики матриці V є однаковими і тому повного набору лінійно-неза-лежно власних векторів не існує (і тому не існує зворотна матриця V -1).

Сингулярне розкладання матриць

Сингулярним значенням і відповідними сингулярними векторами прямокутної ма-тріци A називаються скаляр σ і пара векторів u і v такі, що задовольняються співвідно-ня
Av = σ u
A T u = σ v
Маючи діагональну матрицю сингулярних чисел Σ і дві ортогональні матриці U та V, сформовані з відповідних власних векторів, можна записати
AV = U Σ
A T U = V Σ
Оскільки U і V є ортогональними матрицями, це можна записати у вигляді сінгуляр-ного розкладання
A = U ΣV T
Повне сингулярне розкладання матриці А розміру m х n включає m х m матрицю U, mхn матрицю Σ, і nхn матрицю V. Іншими словами, обидві матриці U та V є квадратними, а матриця Σ має той самий розмір, що і A. Якщо A має набагато більше рядків ніж стовп-цов, результуюча матриця U може бути досить великою, але більшість її стовп-цов множаться на нулі в Σ. У таких ситуаціях може бути використана так звана економічна декомпозиція, яка зберігає як час так і пам'ять, за рахунок виведення Матрі-ці U розміру mхn, матриці Σ розміру nхn і тієї ж матриці V.
Спектральне розкладання є підходящим інструментом аналізу матриці, коли пос-льодовий здійснює перетворення векторного простору в себе, як це було у роз-смотрением вище прикладі диференціальних рівнянь. З іншого боку, сингулярне розкладання матриць зручно при відображенні одного векторного простору в інший, можливо з іншою розмірністю. Більшість систем спільних лінійних рівнянь відно-сятся до другої категорії. Якщо матриця А є квадратною, симетричної і поло-жітельном-визначеної, то її спектральне і сингулярне розкладання збігаються. Але при відхиленні A від симетричної і позитивно-певної матриці, різниця між двома розкладами зростає. Зокрема, сингулярне розкладання дійсної мат-риці завжди дійсно, але спектральне розкладання дійсної несиметричної матриці може бути і комплексним.

Для матриці

A =

9 квітень
8 червні
2 липня
повне сингулярне розкладання задається у формі
[U, S, V] = svd (A)
і призводить до таких результатів
                                            U =
-0.6105 0.7174 0.3355
-0.6646 -0.2336 -0.7098
-0.4308 -0.6563 0.6194
                                                     S =
14.9359 0
0 5.1883
0 0
                                                    V =
-0.6925 0.7214
-0.7214 -0.6925
Ви можете переконатися, що матриця U * S * V 'дорівнює А з точністю до помилок округлення. Для цього прикладу економічна декомпозиція дає незначний ефект.
[U, S, V] = svd (A, 0)
                                                       U =
-0.6105 0.7174
-0.6646 -0.2336
-0.4308 -0.6563
                                                         S =
14.9359 0
0 5.1883
                                                         V =
-0.6925 0.7214
-0.7214 -0.6925
Як і в першому випадку, матриця U * S * V 'дорівнює A з точністю до помилок округлення.

Поліноми і інтерполяція

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

Поліноми і дії над ними


Огляд поліноміальних функцій

Функція

Опис

conv
Множення поліномів.
deconv
Розподіл поліномів.
poly
Обчислення характеристичного полінома матриці або визначення полінома з заданими корінням.
polyder
Обчислення похідних від поліномів.
polyfit
Апроксимація даних поліномом.
polyval
Обчислення значень поліномів у заданих точках.
polyvalm
Обчислення значень матричного полінома.
residue
Розкладання на прості дроби (обчислення відрахувань).
roots
Обчислення коренів полінома.

Представлення поліномів

MATLAB являє поліноми як вектори-рядки, що містять коефіцієнти Поліно-мов по убутним ступенях. Наприклад, розглянемо таке рівняння
p (x) = x 3 - 2 x - 5
Це відомий приклад Валліса (Wallis), використаний при першому поданні методу Ньютона у Французької Академії. Ми будемо використовувати його в подальшому при рассмот-рении прикладів використання різних функцій. Для введення даного полінома в MATLAB, слід записати
p = [1 0 -2 -5].

Коріння полінома

Коріння полінома обчислюються за допомогою функціонально roots:
r = roots (p)
r =
2.0946
-1.0473 + 1.1359i
-1.0473 - 1.1359i
MATLAB запам'ятовує обчислені коріння як вектор-стовпець. Функція poly виконує про-ратну роль, тобто за заданим коріння полінома обчислює значення його коефіцієнтів (зверніть увагу на значення другого коефіцієнта, який в ідеалі дорівнює нулю).
p2 = poly (r)
p2 =
1 8.8818e -16 -2 -5
Функції poly і roots є взаємно-зворотними функціями, з точністю до упорядоч-коефіцієнтів, масштабування і помилок округлення.
Характеристичні поліноми
Функція poly обчислює також коефіцієнти характеристичного полінома матриці:
A = [1.2 березня -0.9, 5 1.75 6; 9 0 1];
poly (A)
ans =
1.0000 -3.9500 -1.8500 -163.2750
Коріння цього полінома, обчислені за допомогою функції roots, є власними значеннями (характеристичними числами) матриці А. (При практичних розрахунках, для обчислення власних значень матриць доцільно обчислювати їх допомогою функ-ції eig.)

Обчислення значень полінома

Функція polyval обчислює значення полінома в заданих точках. Для обчислення p в точ-ке s = 5, слід записати
polyval (p, 5)
                                                             
                                                               ans =
110
Можна також обчислити значення матричного полінома. Так, замість полінома Валліса мо-жно записати:
p (X) = X 3 - 2 X - 5 I
де X є квадратною матрицею, а I - Одиничної матрицею. Наприклад, сформуємо сле-дме квадратну матрицю X
X = [2 4 5; -1 0 3; 7 січня 5];
і обчислимо значення заданого вище полінома p (X) на даній матриці.
Y = polyvalm (p, X)

Y =

377 179 439
111 81 136
490 253 639

Множення і ділення поліномів

Для множення і ділення поліномів призначені відповідно функції conv і deconv. Розглянемо поліноми a (s) = s 2 + 2s + 3 і b (s) = 4s 2 + 5s + 6. Для обчислення їх твори слід ввести
a = [1 2 3]; b = [4 5 6];
c = conv (a, b)
MATLAB повертає
c =
4 13 28 27 18
Для отримання з с полінома b скористаємося функцією deconv:
[Q, r] = deconv (c, a)
q =
4 5 6
r =
0 0 0 0 0
де r - залишок після розподілу (в даному випадку нульової вектор). У загальному випадку для полі-номів q, r, c, a у функції deconv справедливе співвідношення

c = conv (q, a) + r

Обчислення похідних від поліномів

Функція polyder обчислює похідну будь-якого полінома. Для отримання похідною від нашого полінома p = [1 0 -2 -5], введемо
q = polyder (p)
q =
3 0 - 2
Функція polyder обчислює також похідні від твору або приватного двох Поліно-мов. Наприклад, створимо два полінома a і b:
a = [1 3 5]; b = [2 4 6];
Обчислимо похідну твори a * b введенням функції polyder з двома вхідними аргу-ментами a і b і одним вихідним:
c = polyder (a, b)
c =
8 30 56 38
Обчислимо похідну від приватного a / b шляхом введення функції polyder з двома вихідними аргументами:
[Q, d] = polyder (a, b)
q =
-2 -8 -2
d =
4 16 40 48 36
 
де відношення двох поліномів q / d є результатом операції диференціювання.

Апроксимація кривих поліномами

Функція polyfit знаходить коефіцієнти полінома заданого ступеня n, який апроксимують-мірует дані (або функцію y (x)) в сенсі методу найменших квадратів:
p = polyfit (x, y, n)
де x і y є вектори, які містять дані x і y, які потрібно апроксимувати Поліно-мом. Наприклад, розглянемо сукупність даних xy, отриману експериментальним пу-тем
x = [1 2 3 4 5]; y = [5.5 43.1 128 290.7 498.4].
Апроксимація функціональної залежності y (x) у вигляді полінома третього порядку
p = polyfit (x, y, 3)
дає коефіцієнти полінома
p =
-0.1917 31.5821 -60.3262 35.3400
Розрахуємо тепер значення полінома, отриманого за допомогою функції polyfit, на більш дрібної шкалою (з кроком 0.1) і побудуємо для порівняння графіки (це робить функція plot) реальних даних і апроксимуючої кривої.
x2 = 1: 0.1: 5;
y2 = polyval (p, x2);
plot (x, y, 'o', x2, y2); grid on
де функція grid on служить для нанесення координатної сітки, а експериментальні дані-ні на графіку відзначені маркерами о.
.
Як видно з малюнка, поліном третього порядку досить добре апроксимує наші дані.

Розкладання на прості дроби

Функція residue обчислює відрахування, полюса і многочлен цілої частини відносини двох полі-номів. Це особливо корисно при поданні систем управління у вигляді передавальних функцій. Для поліномів a (s) і b (s), за відсутності кратних коренів маємо

де r є вектор-стовпець відрахувань, p є вектор-стовпець полюсів, а k є вектор-рядок це-лой частини дробово-раціональної функції. Розглянемо передавальну функцію


Для поліномів чисельника і знаменника цієї функції маємо:
b = [-4 8]; a = [1 червня 8].
Ввівши
[R, p, k] = residue (b, a)
отримаємо
r =
-12
8
p =
-4
-2
k =
[]
Функція residue з трьома вхідними (r, p, і k) і двома вихідними (b2, a2) аргументами ви-виконує го обернену функцію згортки наявного розкладу на прості дроби, в дрібно-раціональну функцію відносини двох поліномів.
[B2, a2] = residue (r, p, k)
                                              
b2 =
-4 8
a2 =
1 6 8
тобто з даних попереднього прикладу ми відновили вихідну передавальну функцію.
У випадку кратних коренів процедура дещо ускладнюється, але залишається розв'язною.

Інтерполяція

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

Огляд функцій інтерполяції

Функції

Опис

  griddata
Двовимірна інтерполяція на нерівномірній сітці.
  griddata3
Тривимірна інтерполяція на нерівномірній сітці.
  griddatan
Багатовимірна інтерполяція (n> = 3).
  interp1
Одновимірна таблична інтерполяція.
  interp2
Двомірна таблична інтерполяція.
  interp3
Тривимірна таблична інтерполяція.
  interpft
Одновимірна інтерполяція з використанням швидкого перетворення Фур'є.
interpn
Багатовимірна таблична інтерполяція.
pchip
Кубічна інтерполяція за допомогою полінома Ерміта.
spline
Інтерполяція кубічним сплайном.
Одновимірна інтерполяція
Двома основними типами одномірної інтерполяції в MATLAB-е є поліноміаль-ва інтерполяція і інтерполяція на основі швидкого перетворення Фур'є.
1. Поліноміальна інтерполяція
Функція interp1 здійснює одновимірну інтерполяцію - важливу операцію в галузі аналізу даних та апроксимації кривих. Ця функція використовує поліноміальні методи, аппроксимируя наявний масив даних поліноміальними функціями і обчислюючи від-чення функції на заданих (бажаних) точках. У найбільш загальній формі ця функ-ція має вигляд
yi = interp1 (x, y, xi, method)
де y є вектор, що містить значення функції; x - вектор такої ж довжини, що містить ті точки (значення аргументу), в яких задані значення y; вектор xi містить ті точки, в ко-торих ми хочемо знайти значення вектора y шляхом інтерполяції; method - додатковий рядок, що задає метод інтерполяції. Є такі можливості для вибору мето-так:
Ступенева інтерполяція (method = 'nearest'). Цей метод прирівнює значення функції в інтерполіруемой точці до її значенням в найближчій існуючої точці наявних даних.
Лінійна інтерполяція (method = 'linear'). Цей метод апроксимує функцію між будь-якими двома існуючими сусідніми значеннями як лінійну функцію, і повер-ащает відповідне значення для точки в xi (метод використовується за умовчанням).
Інтерполяція кубічними сплайнами (method = 'spline'). Цей метод апроксимує ін-терполіруемую функцію між будь-якими двома сусідніми значеннями за допомогою кубі-чеських функцій, і використовує сплайни для здійснення інтерполяції.
Кубічна інтерполяція (method = 'pchip' або 'cubic'). Ці методи ідентичні. Вони вико-ристовують кусково кубічну ермітової апроксимацію і зберігають монотонність і форму даних.
Якщо який-небудь з елементів вектора xi знаходиться поза інтервалу, заданого вектором x, то вибраний метод інтерполяції використовується також і для екстраполяції. Як альтернатива,
функція yi = interp1 (x, y, xi, method, extrapval) замінює екстрапольовані значення тими, які задані вектором extrapval. Для останнього часто використовується нечислове значення NaN.
Всі методи працюють на нерівномірній сітці значень вектора x.
Розгляд швидкості, необхідної пам'яті та гладкості методів. При виборі методу ін-терполяціі завжди потрібно пам'ятати, що деякі з них вимагають більшого об'єму пам'яті або виконуються швидше, ніж інші. Однак, вам може знадобитися використання лю-якого з цих методів, щоб досягти потрібного ступеня точності інтерполяції (гладкості результатів). При цьому потрібно виходити з таких критеріїв.
Метод ступінчастою апроксимації є найшвидшим, проте він дає найгірші результати з точки зору гладкості.
Лінійна інтерполяція використовує більше пам'яті ніж ступінчаста і вимагає дещо більшого часу виконання. На відміну від східчастої апроксимації, результуюча функція є безперервною, але її нахил змінюється в значеннях вихідної сітки (результат-них даних).
Кубічна інтерполяція сплайнами вимагає найбільшого часу виконання, хоча тре-бует менших обсягів пам'яті ніж кубічна інтерполяція. Вона дає самий гладкий ре-зультат з усіх інших методів, проте ви можете отримати несподівані результати, якщо вхідні дані розподілені нерівномірно і деякі крапки дуже близькі.
Кубічна інтерполяція вимагає більшої пам'яті і часу виконання ніж ступінчаста або лінійна. Проте в даному випадку як інтерполіруемие дані, так і їх похідні є безперервними.
Відносні якісні характеристики всіх перерахованих методів зберігаються і в разі двох-або багатовимірної інтерполяції.

2. Інтерполяція на основі швидкого перетворення Фур'є _

Функція interpft здійснює одновимірну інтерполяцію з використанням швидкого пре-освіта Фур'є (FFT). Цей метод обчислює перетворення Фур'є від вектора, який містить значення періодичної функції. Потім обчислюється зворотне перетворення Фур'є з використанням більшої кількості точок. Функція записується у формі
y = interpft (x, n)
де x є вектор, що містить дискретні значення періодичної функції, заданої на рівномірній сітці, а n - число рівномірно розподілених точок, в яких потрібно оцінити значення інтерполіруемой функції.
Двовимірна інтерполяція
Функція interp2 здійснює двовимірну інтерполяцію - важливу операцію при обробці зображень та графічного представлення даних. У найбільш загальній формі ця команда має вигляд
ZI = interp2 (X, Y, Z, XI, YI, method)
де Z є прямокутний масив, що містить значення двовимірної функції; X і Y являють-ся масивами однакових розмірів, що містять крапки в яких задані значення двумер-ної функції; XI і YI є матриці, що містять точки інтерполяції (тобто проміжний-ні точки, в яких потрібно обчислити значення функції); method - рядок, що визначає метод інтерполяції. У випадку двовимірної інтерполяції можливі три різних методи:
Ступенева інтерполяція (method = 'nearest'). Цей метод дає кусково-постійну поверхню на області значень. Значення функції в інтерполіруемой точці одно значен-ня функції в найближчій заданій точці.
Білінійна інтерполяція (method = 'linear'). Метод забезпечує апроксимацію даних за допомогою білінійної поверхні (площині) на множині заданих значень двумер-ної функції. Значення в точці інтерполяції є комбінацією значень чотирьох бли-жайшіх точок. Даний метод можна вважати «кусково-білінійних»; він швидше і вимагає менше пам'яті, ніж Бікубічна інтерполяція.
Бікубічна інтерполяція (method = 'cubic'). Даний метод апроксимує поверх-ність за допомогою Бікубічеський поверхонь. Значення в точці інтерполяції є комбінацією значень в шістнадцяти найближчих точках. Метод забезпечує значно більш гладку поверхню у порівнянні з білінійної інтерполяцією. Це може бути ключовим перевагою в додатках типу обробки зображень. Особливо ефек-нормативним даний метод є в ситуаціях, коли потрібне безперервне як Інтерпол-ються даних, так і їх похідних.
Всі ці методи вимагають, щоб X і Y були монотонними, тобто або завжди возрастающе-ми або завжди зменшуються від точки до точки. Ці матриці слід сформувати з викорис-танням функції meshgrid, або ж, у противному випадку, потрібно переконатися, що «схема» те-чек імітує сітку, отриману функцією meshgrid. Перед інтерполяцією, кожний із зазначених методів автоматично відображає вхідні дані в рівномірно розподілених ленну сітку.   Якщо X і Y вже розподілені рівномірно, ви можете прискорити обчислення додаючи зірочку до рядка методу, наприклад, '* cubic'.
Порівняння методів інтерполяції
Наведений нижче приклад порівнює методи двовимірної інтерполяції у разі матриці даних розміру 7х7.
  1. Сформуємо функцію peaks на «грубої» сітці (з одиничним кроком).
[X, y] = meshgrid (-3: 1: 3);
z = peaks (x, y);
surf (x, y, z)
де функція meshgrid (-3:1:3) задає сітку на площині x і y в вигляді двовимірних масивів розміру 7х7; функція peaks (x, y) є двовимірної функцією, використовуваної в MATLAB-е в якості стандартних прикладів, а surf (x, y, z) будує забарвлену параметричну повер-верхнею. Відповідний графік показаний нижче.

  1. Створимо тепер більш дрібну сітку для інтерполяції (з кроком 0.25).
[Xi, yi] = meshgrid (-3:0.25:3);
  1. Здійснимо інтерполяція перерахованими вище методами.
zi1 = interp2 (x, y, z, xi, yi, 'nearest');
zi2 = interp2 (x, y, z, xi, yi, 'bilinear');
zi3 = interp2 (x, y, z, xi, yi, 'bicubic');
Порівняємо графіки поверхонь для різних методів інтерполяції.

surf (xi, yi, zi1) surf (xi, yi, zi2) surf (xi, yi, zi3)
     Метод 'nearest' Метод 'bilinear' Метод 'bicubic'
Цікаво також порівняти лінії рівнів даних поверхонь, побудованих за допомогою спеціальної функції contour.

contour (xi, yi, zi1) contour (xi, yi, zi2) contour (xi, yi, zi3)
        Метод 'nearest' Метод 'bilinear' Метод 'bicubic'
Відзначимо, що Бікубічеський метод виробляє зазвичай більш гладкі контури. Це, однак, не завжди є основною турботою. Для деяких додатків, таких, наприклад, як про-работка зображень в медицині, метод типу ступінчастою інтерполяції може бути кращим, тому що він не «виробляє» жодних «нових» результатів спостережень.
Аналіз даних і статистика
У даному розділі будуть розглянуті деякі основні можливості системи MATLAB в галузі аналізу даних і статистичної обробки інформації. Крім базових функ-цій, в системі MATLAB є також ряд спеціалізованих пакетів, призначених для вирішення відповідних завдань у різних додатках (англійською мовою дано назви пакетів):
  • Optimization - Нелінійні методи обробки даних і оптимізація.
  • Signal Processing - Обробка сигналів, фільтрація та частотний аналіз.
  • Spline - Апроксимація сплайнами.
  • Statistics - Поглиблений статистичний аналіз, нелінійна апроксимація і
                          регресія.
  • Wavelet - Імпульсна декомпозиція сигналів та зображень.
Увага! MATLAB виконує обробку даних, записаних у вигляді двовимірних масивів за стовпцями! Одномірні статистичні дані зазвичай зберігаються в окремих векорах, причому n-мірні вектори можуть мати розмірність 1х n або n х1. Для багатовимірних даних матриця є природним поданням, але тут є дві можливості для орієнтації даних. За прийнятим у системі MATLAB угодою, різні змінні повинні утворювати стовпчики, а відповідні спостереження - рядки. Тому, наприклад, набір даних, що складається з 24 вибірок 3 змінних записується у вигляді мат-риці розміру 24х3.
Основні функції обробки даних
Перелік функцій обробки даних, розташованих у директорії MATLAB-а datafun наведений у Додатку 8.
Розглянемо гіпотетичний числовий приклад, який заснований на щогодини підрахунку чис-ла машин, що проходять через три різні пункту на протязі 24 годин. Припустимо, результатів ти спостережень дають наступну матрицю count
count =
11 11 9
13 липня 1911
14 17 20
11 13 9
43 51 69
38 46 76
61 132 186
75 135 180
38 88 115
28 36 55
12 грудня 1914
18 27 30
18 19 29
17 15 18
19 36 48
32 47 10
42 65 92
57 66 151
44 55 90
114 145 257
35 58 68
12 листопада 1915
13 вересня 1915
10 9 7
Таким чином, ми маємо 24 спостереження трьох змінних. Створимо вектор часу, t, з-який складається з цілих чисел від 1 до 24: t = 1: 24. Побудуємо тепер залежності стовпців Матрі-ці counts від часу і надпишіть графік:
                                                plot (t, count)
legend ('Location 1', 'Location 2', 'Location 3', 0)
xlabel ('Time')
ylabel ('Vehicle Count')
grid on
  де функція plot (t, count) будує залежності трьох векторів-стовпчиків від часу; функція
legend ('Location 1', 'Location 2', 'Location 3', 0) показує тип кривих; функції xlabel і ylabel надписують координатні осі, а grid on виводить координатну сітку. Відповідними-ющій графік показаний нижче.

Застосуємо до матриці count функції max (максимальне значення), mean (середнє значення) і std (стандартне, або середньоквадратичне відхилення).
mx = max (count)
mu = mean (count)
sigma = std (count)
У результаті отримаємо
mx =
114 145 257
mu =
32.00 46.5417 65.5833
sigma =
25.3703 41.4057 68.0281
де кожне число в рядку відповідей є результат операції вздовж відповідного стовпця матриці count. Для визначення індексу максимального чи мінімального елемента потрібно у відповідній функції задати другий вихідний параметр. Наприклад, введення
[Mx, indx] = min (count)
                                                         
mx =
7 9 7
indx =
23 лютого 1924
показує, що найменше число машин за годину було зареєстровано в 2 години для першого пункту спостереження (перший стовпець) і в 23 і 24 чч. для інших пунктів спостереження.
Ви можете відняти середнє значення з кожного стовпця даних, використовуючи зовнішнє вироб-ведення вектора, складеного з одиниць і вектора mu (вектора середніх значень)
e = ones (24, 1)
x = count - e * mu
Перегрупування даних може допомогти вам в оцінці всього набору даних. Так, використання в системі MATLAB в якості єдиного індексу матриці двокрапки, призводить до подання цієї матриці як одного довгого вектора, складеного з її шпальт. Тому, для знаходження мінімального значення всього безлічі даних можна ввести
min (count (:))
що призводить до результату
ans =
7
Запис count (:) в даному випадку привела до перегрупування матриці розміру 24х3 у вектор-стовпець розміру 72х1.

Матриця ковариаций і коефіцієнти кореляції

Для статистичної обробки в MATLAB-е є дві основні функції для обчислений-ня коваріації і коефіцієнтів кореляції:
  • cov - У разі вектора даних ця функція видає дисперсію, тобто міру розподілених
                лення (відхилення) спостерігається змінної від її середнього значення. У випадку
матриць це також міра лінійної залежності між окремими змінними,
обумовлена ​​недіагональні елементами.
  • corrcoef - Коефіцієнти кореляції - нормалізована міра лінійної ймовірність-ної залежності між перменнимі.
Застосуємо функцію cov до на одну колонку матриці count
cov (count (:, 1))
Результатом буде дисперсія кількості машин на першому пункті спостереження
                       
ans =
643.6522
Для масиву даних, функція cov обчислює матрицю ковариаций. Дисперсії стовпців мас-сива даних при цьому розташовані на головній діагоналі матриці ковариаций. Інші елементи матриці характеризують ковариацию між стовпцями вихідного масиву. Для матриці розміру mхn, матриця ковариаций має розмір n-by-n і є симетричною, тобто збігається з транспонованої.
Функція corrcoef обчислює матрицю коефіцієнтів кореляції для масиву даних, де кожен рядок є спостереження, а кожен стовпець - змінна. Коефіцієнт кореляції - це нормалізована міра лінійної залежності між двома змінними. Для некори-релірованних (лінійно-незалежних) даних коефіцієнт кореляції дорівнює нулю; еківа-лентние дані мають поодинокий коефіцієнт кореляції. Для матриці mхn, відпо-відний матриця коефіцієнтів кореляції має розмір nхn. Розташування елементів в матриці коефіцієнтів кореляції аналогічно розташуванню елементів у розглянутій вище матриці ковариаций. Для нашого прикладу підрахунку кількості машин, при введенні
corrcoef (count)
отримаємо
ans =
1.0000 0.9331 0.9599
0.9331 1.0000 0.9553
0.9599 0.9553 1.0000
Очевидно, тут є сильна лінійна кореляція між спостереженнями кількості машин у трьох різних точках, тому що результати досить близькі до одиниці.

Кінцеві різниці

MATLAB надає три функції для обчислення кінцевих різниць.

Функція

Опис

diff
Різниця між двома послідовними елементами вектора. Наближене диференціювання.
gradient
Наближене обчислення градієнта функції.
del2
П'ятиточкова апроксимація лапласіана.
Функція diff обчислює різницю між послідовними елементами числового вектора, тобто diff (X) є [X (2)-X (1) X (3)-X (2) ... X (n)-X (n-1) ]. Так, для вектора A,
A = [9 -2 3 0 1 5 4];
diff (A)
MATLAB повертає
ans =

-11 5 -3 1 4 -1

Крім обчислення перший різниці, функція diff є корисною для визначення визна-ділених характеристик вектора. Наприклад, ви можете використовувати diff для визначення, чи є вектор монотонним (значення елементів або завжди зростають або убувають), або чи має він рівні приросту і т.д. Наступна таблиця описує декілька різних-них шляхів використання функції diff з одномірним вектором x.
Застосування (тест)
Опис
diff (x) == 0
Тест на визначення елементів, що повторюються
all (diff (x) > 0)
Тест на монотонність
all (diff (diff (x)) == 0)
Тест на опредедленіе рівних збільшень
Обробка даних
У даному розділі розглядається як чинити з:
  • Відсутніми значеннями
  • Викидами значень або несумісними («недоречними») значеннями

Відсутні значення

Спеціальне позначення NaN, відповідає в MATLAB-е нечислове значення. У відпо-ствие до прийнятих угод NaN є результатом невизначених виразів та-ких як 0 / 0. Належне поводження з відсутніми даними є складною пробле-мій і часто змінюється в різних ситуаціях. Для цілей аналізу даних, часто зручно використовувати NaN для подання відсутніх значень або даних які недос-тупни. MATLAB звертається зі значеннями NaN однаковим і суворим чином. Ці значення зберігаються в процесі обчислень аж до кінцевих результатів. Будь-яке мате-матично дію, вироблене над значенням NaN, в результаті також виробляє NaN. Наприклад, розглянемо матрицю, що містить чарівний квадрат розміру 3х3, де це-нтральний елемент встановлений рівним NaN.
a = magic (3); a (2,2) = NaN;
                                                  
a =
8 1 6
3 NaN 7
4 9 2
Обчислимо суму елементів всіх стовпців матриці:
sum (a)
                                                        ans =
15 NaN 15
Будь-які математичні дії над NaN поширюють NaN аж до кінцевого резуль-тата. Перед проведенням будь-яких статистичних обчислень вам слід видалити всі NaN-и з наявних даних. Ось деякі можливі шляхи виконання даної операції.

Програма

Опис

i = find (~ isnan (x));
x = x (i)
  Знайти індекси всіх еементов вектора, не рівних
NaN, і потім зберегти тільки ці елементи
x = x (find (~ isnan (x)))
Видалити всі NaN-и з вектора
x = x (~ isnan (x));
Видалити всі NaN-и з вектора (швидше).
x (isnan (x)) = [];
Видалити всі NaN-и з вектора
X (any (isnan (X ')),:) = [];
Видалити всі рядки матриці X містять NaN-и
Увага. Для знаходження нечислових значень NaN вам слід використовувати спеціаль-ную функцію isnan, оскільки при прийнятому в MATLAB-е угоді, логічне порів-ня NaN == NaN завжди видає 0. Ви не можете використовувати запис x (x == NaN) = [] для видалення NaN-ів з ваших даних.
Якщо вам часто доводиться видаляти NaN-и, скористайтеся короткою програмою, записаний-ної у вигляді М-файлу.
function X = excise (X)
X (any (isnan (X')),:) = [];
Тоді. надрукувавши
X = excise (X);
ви виконаєте потрібну дію (excise по англійськи означає вирізати)

Видалення викидів значень

Ви можете видалити викиди значень або несумісні дані за допомогою процедур, дуже схожих з видаленням NaN-ів. Для нашої транспортної задачі, з матрицею даних count, середні значення і стандартні (среднеквадратические) відхилення кожного стовпця матриці count рівні
mu = mean (count)
sigma = std (count)
mu =
32.0000 46.5417 65.5833
sigma =
25.3703 41.4057 68.0281
Число рядків з викидами значень, що перевищують утроенное середньоквадратичне відхилення-ня від середнього значення можна отримати наступним чином:
[N, p] = size (count)
outliers = abs (count - mu (ones (n, 1 ),:))> 3 * sigma (ones (n, 1 ),:);
nout = sum (outliers)
nout =
1 0 0
Є тільки один викид у першому стовпці. Видалимо всі спостереження за допомогою Вира-вання
count (any (outliers'),:) = [];
Регресія і підгонка кривих
Часто буває корисним або необхідним знайти функцію, яка описує взаємозв'язок між деякими спостережуваними (або знайденими експериментально) змінними. Оп-ределеніе коефіцієнтів такої функції веде до вирішення завдання перевизначених систе-ми лінійних рівнянь, тобто системи, у якій число рівнянь перевищує число не-відомих. Зазначені коефіцієнти можна легко знайти з використанням оператора обрат-ного поділу \ (backslash). Припустимо, ви робили вимірювання змінної y при різних значеннях часу t.
t = [0 0.3 0.8 1.1 1.6 2.3] ';
y = [0,5 0.82 1.14 1.25 1.35 1.40] ';
plot (t, y, 'o'); grid on

У наступних розділах ми розглянемо три способи моделювання (апроксимації) цих даних:
  • Методом поліноміальної регресії
  • Методом лінійно-параметричної (linear-in-the-parameters) регресії
  • Методом множинної регресії

Поліноміальна регресія

Грунтуючись на вигляді графіка, можна допустити, що дані можуть бути апроксимовані поліноміальної функцією другого порядку:
y = a 0 + a 1 t + a 2 t 2
Невідомі коефіцієнти a 0, a 1 і a 2 можуть бути знайдені методом среднеквадратічес-кою підгонки (апроксимації), яка заснована на мінімізації суми квадратів відхи-ний даних від моделі. Ми маємо шість рівнянь щодо трьох невідомих,

експонованих наступної матрицею 6х3:
X = [ones (size (t)) t t. ^ 2]
X = 1.0000 0 0
1.0000 0.3000 0.0900
1.0000 0.8000 0.6400
1.0000 1.1000 1.2100
1.0000 1.6000 2.5600
1.0000 2.3000 5.2900
Рішення знаходиться за допомогою оператора \:
a = X \ y
                                                              
                                                               a =
0.5318
0.9191
- 0.2387
Отже, поліноміальна модель другого порядку наших даних буде мати вигляд
y = 0.5318 + 0.9191 t - 0.2387 t 2
Оцінимо тепер значення моделі на рівновіддалених точках (з кроком 0.1) і завдамо криву на графік з вихідними даними.
                                                       T = (0: 0.1: 2.5) ';
Y = [ones (size (T)) T T. ^ 2] * a;
plot (T, Y ,'-', t, y, 'o'); grid on

Очевидно, поліноміальна апроксимація виявилася не такою вдалою. Тут можна або по-висіть порядок апроксимує полінома, чи спробувати знайти будь-яку іншу функціональну залежність для отримання кращої підгонки.
Лінійно-параметрична регресія [1]
Замість поліноміальної функції, можна було-б спробувати так звану лінійно-параметричну функцію. У даному випадку, розглянемо експоненційну функцію
y = a 0 + a 1- t + a 2 t ℮ - t
Тут також, невідомі коефіцієнти a 0, a 1 і a 2 можуть бути знайдені методом найменшим-ших квадратів. Складемо і вирішимо систему спільних рівнянь, сформувавши регресії-онную матрицю X, і застосувавши для визначення коефіцієнтів оператор \:
X = [ones (size (t)) exp (- t) t. * exp (- t)];
a = X \ y
                                                                  a =
1.3974
- 0.8988
0.4097
Значить, наша модель даних має вигляд
y = 1.3974 - 0.8988 ℮ - t + 0.4097 t ℮ - t
Оцінимо тепер, як і раніше, значення моделі на рівновіддалених точках (з кроком 0.1) і на-несемо цю криву на графік з вихідними даними.

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

Множинна регресія

Розглянуті вище методи апроксимації даних можна поширити і на випадок бо-леї ніж однієї незалежної змінної, за рахунок переходу до розширеній формі запису. До-пустимо, ми виміряли величину y для деяких значень двох параметрів x 1 і x 2 і напів-чилі наступні результати
x1 = [0.2 0.5 0.6 0.8 1.0 1.1] ';
x2 = [0.1 0.3 0.4 0.9 1.1 1.4] ';
y = [0.17 0.26 0.28 0.23 0.27 0.24] ';
Множинну модель даних будемо шукати у вигляді
y = a 0 + a 1 x 1 + a 2 x 2
Методи множинної регресії вирішують завдання визначення невідомих коефіцієнтів a 0,   a 1 і a 2 шляхом мінімізації середньоквадратичної помилки наближення. Складемо сов-місцеву систему рівнянь, сформувавши матрицю регресії X і вирішивши рівняння відно-сітельно невідомих коефіцієнтів, застосовуючи оператор \.
X = [ones (size (x1)) x1 x2];
a = X \ y
                                                                 a =
0.1018
0.4844
-0.2847
Отже, модель дає мінімальну середньоквадратичної помилки аппроксіма-ції має вигляд
y = 0.1018 + 0.4844x 1 - 0.2847x 2
Для перевірки точності підгонки знайдемо максимальне значення абсолютного значення від-лень експериментальних і розрахункових даних.
Y = X * a;
MaxErr = max (abs (Y - y))
MaxErr =
0.0038
Ця помилка дає підставу стверджувати, що наша модель досить адекватно відображає ре-зультати спостережень.

Графічний інтерфейс підгонки кривих

MATLAB дає можливість здійснювати апроксимацію даних спостережень за допомогою спеціального графічного інтерфейсу підгонки Кривих (ІПК) (в англійському оригіналі - Basic Fitting interface). Використовуючи даний інтерфейс, ви можете легко і швидко вирішити безліч завдань підгонки кривих, отримуючи при цьому саму різноманітну інформацію про результати вашої підгонки. ІПК надає наступні можливості:
  • Апроксимує дані використовуючи сплайна інтерполянт, ермітової інтерпо-лянт, або ж поліноміальний інтерполянт до 10 порядку включно.
  • Здійснює безліч графічних побудов для заданих наборів даних.
  • Будує графіки нев'язок (помилок підгонки).
  • Аналізує чисельні результати підгонки.
  • Здійснює інтерполяцію або екстраполяцію даних підгонки.
  • Аннотірует графіки чисельними результатами підгонки і нормами помилок апроксимації.
  • Запам'ятовує результати підгонки і обчислень в рабочет просторі MATLAB-а.
Грунтуючись на ваших конкретних завданнях і додатках, ви можете використовувати ІПК, можливості, що надаються командним вікном, або ж комбінувати ці дві можли-ності. Відзначимо, що ІПК призначений тільки для роботи з одновимірними і двомірними даними.
Розгляд основних властивостей ІПК
Загальний вигляд ІПК показаний нижче.

Для його виклику в подібному вигляді, потрібно виконати наступні три кроки:
  1. Побудувати який або графік даних.
  2. Вибрати опцію Basic Fitting з меню Tools вашого графічного вікна.
  3. Натиснути двічі на кнопку More в нижній частині ІПК. У результаті відкриється вікно c трьома панелями (див. малюнок), а сам напис заміниться на Less.
Розглянемо основні опції ІПК.
Select data (Вибір даних) - У даному вікні розташований список всіх змінних, побудований-них на активному графіку, з яким пов'язаний ІПК (на графіку може бути побудовано неск-лько кривих). Використовуйте цей список для вибору необхідного (поточного) набору дан-них. Під поточним мається на увазі той набір даних, для якого ви хочете здійснити підгонку. За один раз ви можете здійснювати дії лише з одним набором даних. З іншого боку, ви можете зробити різні підгонки для поточного набору даних за рахунок зміни назви цих даних. З цією метою можна скористатися так званим Редактором Графіків (Plot Editor), який буде розглянуто в подальшому.
Center and scale X data (Центрування та масштабування даних X) - Якщо дана опція обрана, то дані центруються (нуль переноситься в середнє значення даних) і масштабу-біруются до одиничного стандартному відхиленню (діляться на вихідне стандартне відхилення-ня). Це може знадобитися для підвищення точності подальших математичних обчислень. Якщо підгонка призводить до результатів, які можуть бути неточними, що відповідають попередження виводиться на екран.
Plot fits (Підгонка кривих) - Ця панель дозволяє візуально переглянути результати однієї або більше припасувань поточного набору даних.
  • Check to display fits on figure (Позначте методи для виведення на графік) - Виберіть методи припасувань, які ви хотіли б використовувати і вивести на графік. Тут є дві основні можливості - вибір інтерполянтов і вибір поліномів. Сплайна інтерполянт використовує для апроксимації сплайни, тоді як Ермі-товий інтерполянт використовує спеціальну функцію pchip (Piecewise Cubic Hermite Interpolating Polynomial - кусково-кубічний ермітової Інтерполяційний Полі-ном). Поліноміальна підгонка використовує функцію polyfit. Ви можете одночасним-аме вибрати будь-які методи підгонки для апроксимації ваших даних. Якщо ваш набір даних містить N точок, вам слід використовувати для апроксимації полі-номи з не більш ніж N коефіцієнтами. В іншому випадку, ІПК автоматично прирівнює надмірне число коефіцієнтів нулю, що призводить до недоопреде-лінощів системи. Зазначимо, що при цьому на дисплей видається відповідне пові-щення.
  • Show equations (Показати рівняння) - При виборі даної опції, рівняння підгін-ки виводиться на ваш графік.
  • Significant digits (Значущі розряди) - Виберіть кількість значущих розрядів для виводи-та на дисплей.
  • Plot residuals (Побудувати графіки різниць (нев'язок)) - При виборі даної опції, на графік виводяться різниці припасувань. Під різницею підгонки розуміється раз-ність між вихідними даними і результатами підгонки для кожного значення ар-гумента вихідних даних. Ви можете побудувати графіки нев'язок як столбчатую ді-аграмму (bar plot), як графік розсіювання (scatter plot), або ж як лінійний графік. Побудови можна здійснювати як у тому ж графічному вікні, так і в окремому. При використанні подграфіков (subplots) для побудови графіків багатовимірних даних, графіки різниць можуть бути побудовані тільки в окремому графічному вікні.
  • Show norm of residuals (Показати норму різниць) - При виборі опції, на графік виводяться також значення норм різниць. Норма різниці є мірою якості підгонки, де менше значення норми відповідає кращій якості. Норма рас-зчитується за допомогою функції norm (V, 2), де V є вектор нев'язок.
Numerical results (Чисельні результати) - Дана панель дозволяє вивчати чисельні характеристики кожної окремої підгонки для поточного набору даних, без побудови графіків.
  • Fit (Метод підгонки) - Виберіть метод підгонки. Відповідні результати бу-дуть представлені у вікні під меню вибору методу. Зауважимо, що вибір методу в дан-ної панелі не робить впливу на панель Plot fits. Тому, якщо ви хочете по-лучити графічне представлення, слід вибрати відповідну опцію в пане-лі Plot fits.
  • Coefficients and norm of residuals (Коефіцієнти і норма нев'язок) - У даному вікні виводяться чисельні вирази для рівняння підгонки, обраного в Fit. Заз-тім, що при першому відкритті панелі Numerical Results, в розглянутому вікні видаються результати останньої підгонки, обраної вами в панелі Plot fits.
  • Save to workspace (Запам'ятати в робочому просторі) - Викликає діалогове вікно, яке дозволяє запам'ятати в робочому просторі результати вашої підгонки.
Find Y = f (X) - Дана панель дає можливість зробити інтерполяцію або екстраполя-цію поточної підгонки.
· Enter value (s) (Введіть дані) - Введіть будь-який вираз, сумісний з систе-мій MATLAB для оцінки вашої поточної підгонки в проміжних або виходячи-щих за межі заданих аргументів точок. Вираз буде обчислено після на-жатія кнопки Evaluate (Обчислити), а результати в табличній формі будуть вивішено ку відповідне вікно нижче. Метод поточної підгонки при цьому вказано в ме-ню Fit.
· Save to workspace (Запам'ятати в робочому просторі) - Викликає діалогове вікно, яке дозволяє запам'ятати в робочому просторі результати вашої Інтерполу-ції.
· Plot results (Побудувати графіки) - При виборі даної опції, результати Інтерполу-виводяться в графічній формі на графік даних.

Рівняння в кінцевих різницях і фільтрація

MATLAB має спціальние функції для роботи з рівняннями в кінцевих різницях і фі-льтрамі. Ці функції працюють головним чином з векторами. Вектори використовуються для зберігання дискретних сигналів або послідовностей, а також для обробки сигналів і аналізу даних. Для систем з багатьма входами, кожен рядок матриці відповідає од-ної тимчасової точки вибірки сигналів, де кожен вхід описується як один вектор-стіл-Бец.
Функція
y = filter (b, a, x)
обробляє дані у векторі x за допомогою фільтра, описуваного векторами a і b, ви-даючи фільтрувати дані y. Функція filter може розглядатися як ефективна реа-лізація рівняння в кінцевих різницях. Структура функції filter є узагальненою структурою фільтра, утвореного за допомогою ліній затримки, який описується наведеними нижче рівняннями в кінцевих різницях, де n є індекс (номер) поточної вибірки, na є порядок полінома, описуваного вектором a, а nb є порядок Поліно-ма, описуваного вектором b. Вихід y (n) є лінійною комбінацією поточного та пре-дидущіх входів, тобто x (n) x (n-1) ..., і попередніх виходів y (n-1) y (n-2) ...
a (1) y (n) = b (1) x (n) + b (2) x (n-1) + ... + b (nb) x (n-nb +1) -
- A (2) y (n-1) - ... - a (na) y (n-na +1)
Припустимо, наприклад, що ми хочемо згладити дані нашої задачі по руху автомобілів по-панелей за допомогою усереднюються фільтра, який видає середня кількість машин за кож-дие 4 години. Даний процес можна виразити за допомогою наступного рівняння в конеч-них різницях:
y (n) = (1 / 4) x (n) + (1 / 4) x (n-1) + (1 / 4) x (n-2) + (1 / 4) x (n-3)
Відповідні вектори рівні:
a = 1; b = [1 / 4 1 / 4 1 / 4 1 / 4];
Скористаємося даними матриці count з розділу Аналіз даних і статистика. Для випускається нашим прикладу, позначимо перший стовпець матриці count через вектор x:
x = count (:, 1);
Усереднені за 4 години дані можуть бути легко обчислені за допомогою наведеної вище функції y = filter (b, a, x). Порівняємо вихідні і згладжені дані, побудувавши їх на одному графіку.
                                            t = 1: length (x);
plot (t, x,'-.', t, y,'-'); grid on
legend ('Original Data', 'Smoothed Data', 2)

Вихідні дані спостереження представлені тут штрих-пунктирною лінією, а згладжені за 4 години дані - суцільною лінією.
Для різних практичних додатків, в спеціальному пакеті Signal Processing Toolbox передбачені численні функції для аналізу сигналів і проектування дискрет-них фільтрів.

Багатовимірні Масиви

Багатовимірні масиви в системі MATLAB є поширенням звичайних двовимірних матриць. Як відомо, матриці мають дві розмірності - рядки (row) і стовпці (column).

Ви можете виділити будь-який елемент двовимірної матриці за допомогою двох індексів, де перший є індексом (номером) рядки, а другий - індексом стовпця. Багатовимірні масиви мають додаткову індексацію. Наприклад, тривимірні масиви мають три індекси:
  • Перший індекс указує розмірність 1, тобто рядки.
  • Другий індекс вказує розмірність 2. тобто стовпці.
  • Третій індекс вказує на розмірність 3. У даному посібнику використовується концепція сторінки (page) для представлення розмірності 3 і вище.

Для звернення, наприклад, до елементу другого рядка і третього стовпця на сторінці 2 потрібно скористатися індексацією (2,3,2) (див. малюнок нижче).
Якщо ви додаєте розмірності до масиву, ви також додаєте індекси. Чотиривимірний масив, наприклад, має 4 індексу. Перші два з них вказують на пару рядок-стовпець, а наступні два характеризують третю і четверту розмірності.

Зазначимо, що загальні функції поводження з багатовимірними масивами знаходяться в директорії datatypes.
Створення багатовимірних масивів
При створенні багатовимірних масивів можна скористатися тими ж прийомами, які використовуються для двовимірних матриць.
Створення масивів з використанням індексації
Один із способів формування багатовимірного масиву полягає у створенні двовимірного масиву та відповідного його розширення. Наприклад, почнемо з простого двовимірного масиву А.
A = [5 7 8; 0 1 9; 4 березня 6];
А є масивом 3х3, тобто його розмірності рядків і стовпців рівні трьом. Щоб додати третій розмірності до А запишемо
A (:,:, 2) = [1 0 4; 3 5 6; 9 8 7].
MATLAB видасть
                                                 
                                                   A (:,:, 1) =
5 7 8
0 1 9
4 3 6
                                                 A (:,:, 2) =
1 0 4
3 5 6
9 8 7
Ви можете продовжити додавання рядків, стовпців або сторінок аналогічним чином.
Розширення багатовимірних масивів. Для розширення будь-якої розмірності масиву А потрібно:
  • Збільшити або додати відповідний індекс і задати необхідні значення.
  • Додати таку ж кількість елементів до відповідних розмірності масиву. Так, для числових масивів всі рядки повинні мати однакову кількість елементів, всі сторінки повинні мати однакове число рядків і стовпців і т.д.
Ви можете скористатися властивістю скалярного поширення системи MATLAB, спільно з оператором двокрапки, для заповнення всієї розмірності єдиним числом:
A (:,:, 3) = 5;
A (:,:, 3)
                                                            ans =
5 5 5
5 5 5
5 5 5
Для перетворення А в чотиривимірний масив розмірності 3х3х3х2 введіть
A (:,:, 1, 2) = [1 2 3; 4 5 6; 7 8 9];
A (:,:, 2, 2) = [9 8 7; 6 5 4; 3 2 1];
A (:,:, 3, 2) = [1 0 1; 1 1 0; 0 1 1];
Відзначимо, що після перших двох вводів MATLAB додає в A необхідну кількість нулів, щоб підтримати відповідні розміри розмірностей (мова йде про перший елемент по четвертій розмірності, тобто при четвертому індексі рівному одиниці, масив А буде містити три нульові матриці розміру 3х3).
Створення масивів із застосуванням функцій MATLAB-а.
Ви можете використовувати для створення багатовимірних масивів такі функції MATLAB-а як randn, ones, і   zeros, абсолютно аналогічно способу використовуваному для двовимірних матриць. Кожен вводиться аргумент являє розмір відповідної розмірності в результуючому масиві. Наприклад, для створення масиву нормально розподілених випадкових чисел розміру 4х3х2 слід записати:
B = randn (4,3,2).
Для створення масиву, заповненого єдиним постійним значенням можна восполь-тися функцією repmat. Ця функція копіює масив (у нашому випадку масив розміру 1х1) уздовж вектора розмірностей масиву.
B = repmat (5, [3 4 2])
                                                    B (:,:, 1) =
5 5 5 5
5 5 5 5
5 5 5 5
                                                    B (:,:, 2) =
5 5 5 5
5 5 5 5
5 5 5 5
Увага! Будь-яка розмірність масиву може мати розмір 0, що просто дає порожній масив (empty array). Так, розмір 10х0х20 є допустимим розміром багатовимірного масиву.
Створення багатовимірного масиву за допомогою функції cat.
Функція cat дає простий шлях побудови багатовимірних масивів; вона об'єднує набір масивів уздовж заданої розмірності.
B = cat (dim, A1, A2 ...)
де А1, А2 і т.д. є об'єднуються масивами. а dim є розмірність, уздовж якої вони об'єднуються. Наприклад, для створення нового масиву з двох двовимірних матриць за допомогою функції cat запишемо
B = cat (3, [2 8; 0 5], [1 3; 9 липня])
що дає тривимірний масив з двома сторінками
B (:,:, 1) =
2 серпня
0 5
                                                         B (:,:, 2) =
3 січня
7 вересня
Функція cat приймає будь-які комбінації існуючих і нових даних. Більше того, ви можете здійснювати вкладення цих функцій. Наведені нижче рядка, наприклад, формують чотиривимірний масив:
A = cat (3, [9 2; 5 червня], [7 1; 8 квітня])
B = cat (3, [3 5; 0 1], [5 6; 2 1])
D = cat (4, A, B, cat (3, [1 2; 3 4], [4 3; 2 1])).
Функція cat автоматично додає, при необхідності, поодинокі індекси між просторами. Наприклад, для створення масиву розміру 2х2х1х2 можна ввести
C = cat (4, [1 2; 4 5], [7 8; 3 лютого])
У цьому випадку функція cat вводить потрібне число одиничних розмірностей для створення чотиривимірного масиву, чия остання розмірність не є одиничною. Якби аргумент dim дорівнював би 5, останній запис призвела б до масиву розміру 2х2х1х1х2. Це додає ще одну одиницю в індексації масиву. Для звернення до значення 8 в чотиривимірному випадку потрібно застосувати таку індексацію

Індекс одиничної розмірності
Визначення характеристик багатовимірних масивів.
Для отримання інформації про наявні багатовимірних масивах можна скористатися командами size (дає розмір масиву), ndims (дає кількість розмірностей) і whos (остання команда дає докладну інформацію про всіх змінних робочого простору системи MATLAB). Для вищенаведеного прикладу ми отримаємо
size (C)
                                     ans =
2 2 1 2
ndims (C)
                                                                  ans =
4
Індексація
Багато концепції, що використовуються в двовимірному випадку, поширюються також на багато-мірні масиви. Для виділення (звернення) до якого-небудь одному елементу багатовимірного масиву слід скористатися целочисленной індексацією. Кожен індекс вказує на відповідну розмірність: перший індекс на розмірність рядків, другий індекс на раз-мірність стовпців, третій на першу розмірність сторінок і так далі. Розглянемо масив випадкових цілих чисел nddata розміру 10х5х3:
nddata = fix (8 * randn (10, 5, 3));
Для звернення до елемента (3,2) на сторінці 2 масиву nddata потрібно записати nddata (3,2,2).
Ви можете також використовувати вектори як масив індексів. У цьому випадку кожен елемент вектора повинен бути допустимим індексом, тобто повинен бути в межах кордонів, визна-ділених для розмірностей масиву. Так, для звернення до елементів (2,1), (2,3), і (2,4) на сторінці 3 масиву nddata, можна записати
nddata (2, [1 3 4], 3).
Оператор двокрапки й індексування багатовимірних масивів.
Стандартна індексація MATLAB-а за допомогою оператора двокрапки (colon) застосовна і в разі багатовимірних масивів. Наприклад, для вибору всього третього стовпця сторінки 2 масиву nddata використовується запис nddata (:, 3, 2). Оператор двокрапки також корисний і для виділення певних підмножин даних. Так, введення nddata (2:3,2:3,1) дає масив (мат-Ріцу) розміру 2х2, який є підмножиною даних на сторінці 1 масиву nddata. Ця матриця складається з даних другої та третьої рядка і сторого і третього стовпця першого стрініци багатовимірного масиву. Оператор двокрапки може використовуватися для індексації з обох сторін запису. Наприклад, для створення масиву нулів розміру 4х4 записуємо:
C = zeros (4,4)
Тепер, щоб привласнити значення підмножини 2х2 масиву nddata чотирьом елементам в центрі масиву З запишемо
C (2:3,2:3) = nddata (2:3,1:2,2)
Усунення невизначеностей в багатовимірної індексації
Деякі висловлювання, такі як
A (:,:, 2) = 1:10
Є неоднозначними, оскільки вони не забезпечують достатнього обсягу інформа-ції щодо структури розмірності, у якому вводяться дані. У представленому вище випадку, робиться спроба поставити одновимірний вектор у двовимірному об'єкті. У таких ситуаціях MATLAB видає повідомлення про помилку. Для усунення неопреденності, потрібно переконатися, що забезпечена достатня інформація про Месі запису даних, і що як дані так і місце призначення мають однакову форму. Наприклад,
A (1,:, 2) = 1:10.
Зміна форми (Reshaping)
Якщо ви не змінюєте форму чи розмір, масиви в системі MATLAB зберігають размернос-ти, задані при їх створенні. Ви можете змінити розмір масиву шляхом додавання або видалення елементів. Ви можете також змінити форму масиву змінюючи розмірності рядків, стовпців і сторінок, за умови збереження тих самих елементів. Функція reshape виконує зазначену операцію. Для багатовимірних масивів ця функція має вигляд
B = reshape (A, [s1 s2 s3 ...])
де s1, s2, і так далі характеризують бажаний розмір для кожної розмірності перетворення ванної матриці. Відзначимо, що перетворений масив повинен мати те ж число елементом тов, що й вихідний масив (іншими словами, твір розмірів масивів має бути незмінним).

Функція reshape «діє» вздовж стовпців. Вона створює перетворену матрицю шляхом взяття послідовних елементів вздовж кожного стовпця вихідної матриці.

Нижче як приклади наведені кілька прикладів масивів, які можуть бути отримані з масиву nddata (зверніть увагу на розмірності).
B = reshape (nddata, [6 25])
C = reshape (nddata, [3 травня 1910])
D = reshape (nddata, [5 3 2 5])
Видалення одиничних розмірностей.
Система MATLAB створює поодинокі розмірності, коли ви задаєте їх при створенні або перетворення масиву, або ж в результаті обчислень приводять до появи зазначе-них розмірностей.
B = repmat (5, [2 3 1 4]);
                                                        
size (B)
ans =
2 3 1 4
Функція squeeze видаляє поодинокі розмірності з масиву.
C = squeeze (B);
size (C)
ans =
2 3 4
Функція squeeze не робить впливу на двовимірні масиви - вектори-рядки оста-ются рядками.
Обчислення з багатовимірними масивами
Багато обчислювальні та математичні функції MATLAB-а приймають в якості аргументів багатовимірні масиви. Ці функції діють на певні розмірності багатовимірних масивів, зокрема, на окремі елементи, вектори або матриці.
Дії над векторами
Функції які діють над векторами, такі як sum, mean, і т.д., за замовчуванням Оби-чно діють вздовж першої непоодинокий розмірності багатовимірного масиву. Багато з цих функцій дають можливість задати розмірність уздовж якої вони діють. Однак, є й винятки. Наприклад, функція cross, яка визначає векторний добуток двох векторів, діє вздовж першої непоодинокий розмірності, що має розмір 3.
Увага! У багатьох випадках ці функції мають інші обмеження на вхідні аргумен-ти - наприклад, деякі функції, що допускають багатовимірні вхідні масиви, вимагають щоб масиви мали однаковий розмір.
Поелементне вплив
Ті функції MATLAB-а, які діють поелементно на двовимірні масиви, такі як тригонометричні та експоненціальні функції, працюють абсолютно аналогічно і в багатовимірному випадку. Наприклад, функція sin повертає масив того ж розміру, що і вхід-ний масив. Кожен елемент вихідного масиву є синусом відповідного еле-мента вхідного масиву. Аналогічно, всі арифметичні, логічні оператори та оператори відносини діють з відповідними елементами багатовимірних масивів (які повинні мати однакові розміри кожної розмірності). Якщо один з операндів є скаляром, а другий - скаляром, то оператори застосовують скаляр до всіх елементів масиву.
Дії над площинами і матрицями
Функції, що діють над площинами чи матрицями, такі як функції лінійної алге-бри або матричні функції в директорії matfun, не приймають в якості аргументів багатовимірні масиви. Іншими словами, ви не можете використовувати функції у директорії matfun, чи оператори *, ^, \, або /, з багатовимірними масивами. Спроба використання багатовимірних масивів або операндів у таких випадках призводить до повідомлення про помилку.
Ви можете, тим не менш, застосувати матричні функції чи оператори до матриць всередині багатовимірних масивів. Наприклад, сооздадім тривимірний масив А
A = cat (3, [1 2 3; 9 8 7; 4 6 5], [0 3 2; 8 серпня 4; 5 Березень 5], [6 квітня 7; 6 серпня 5; 5 4 3]);
Застосування функції eig до всього багатовимірному масиву дає повідомлення про помилку:
eig (A)
??? Error using è eig
Input arguments must be 2-D.
Ви можете, однак, пріментіь функцію eig до окремих площинах у межах масиву. Наприклад, скористаємося оператором двокрапки для виділення однієї сторінки (допустимо, другий):
eig (A (:,:, 2))
                                                           ans =
-2.6260
12.9129
2.7131
Увага! У першому випадку, де не використовується оператор двокрапки, для уникнення помилки-ки потрібно використовувати функцію squeeze. Наприклад, введення eig (A (2 ,:,:)) призводить до помилки тому що розмір входу є [1 3 3]. Вираз eig (squeeze (A (2,:,:))), проте, передає функції eig допустиму двовимірну матрицю.
Організація даних у багатовимірних масивах
Ви можете використовувати два можливих варіанти подання даних за допомогою багатовимірних масивів:
  • Як площині (або сторінки) двовимірних даних. Надалі ви можете обра-спілкуватися з цими сторінками як з матрицями.
  • Як багатовимірні дані. Наприклад, ви можете мати чотиривимірний масив, де кожен елемент відповідає температурі або тиску повітря, виміряними на рівномірно розподіленої тривимірної (просторової) сітці в кімнаті.
В якості конкретного прикладу розглянемо надання будь-якого зображення у форматі RGB. Нагадаємо, що у форматі RGB зображення зберігається у вигляді трьох двовимірних матриць однакового розміру, кожна з яких характеризує інтенсивність одного кольору - червоного (Red), зеленого (Green) і синього (Blue) - у відповідній точці. Загальна карти-на при цьому виходить в результаті накладення трьох зазначених матриць. Для окремого зображення, використання багатовимірних масивів є, ймовірно, найбільш легким шляхом для запам'ятовування даних і доступу до них.

Нехай все зображення зберігається у файлі RGB. Для доступу до повної площині зображення-ня в одному кольорі, припустимо - червоному, слід записати
red_ plane = RGB (:,:, 1);
Для доступу до частини всього зображення можна використовувати запис
subimage = RGB (20:40, 50:85,:)
Зображення у форматі RGB є хорошим прикладом даних, для яких може піт-ребоваться доступ до окремих площинах, для операцій типу фільтрації або просто де-монстрацией. В інших завданнях, проте, самі дані можуть бути багатовимірними. Розглянь, наприклад, набір температур, виміряних на рівномірній просторової сітці будь-якого приміщення.

У даному випадку просторове положення кожного значення температури є складовою частиною набору даних, тобто фізичне розташування в тривимірному прос-наної є частиною інформації. Такі дані також вельми прспособлени для подання за допомогою багатовимірних масивів (див. малюнок вище).
Тут, щоб знайти середнє значення всіх вимірювань, тобто середню температуру повітря в кімнаті, можна записати
mean (mean (mean (TEMP)))
де через TEMP позначений масив чотиривимірних даних.
Дл отримання вектора «серединний» температур (елементу (2,2)) кімнати на кожній сторінці, тобто в кожному перетині, запишемо
B = TEMP (2, 2,:).
ОРГАНІЗАЦІЯ ТА ЗБЕРІГАННЯ ДАНИХ
Для зберігання різних типів даних у системі MATLAB використовуються так звані структури (structure) і осередку (cell). Структури (іноді їх називають масивами структур) служать для зберігання масивів різних типів даних, організаванних за принципом пої-менувати полів. Осередки (або масиви осередків) є спеціальним класом масивів системи MATLAB, чиї елементи складаються з клітинок, в яких можуть зберігатися будь-які інші масиви даних, застосовувані в MATLAB-е. Як структури, так і осередки забезпечують ієрархічний механізм для зберігання самих різних типів даних. Вони відрізняються один від одного перш за все засобом організації бази даних. При використанні струк-тур доступ до даних здійснюється за допомогою найменувань полів, тоді як у масивах осередків доступ здійснюється за допомогою матричної індексації.
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Книга
625.5кб. | скачати


Схожі роботи:
Реалізація математичних моделей використовують методи інтегрування в середовищі MATLAB
Система організації розрахунків
Система безготівкових розрахунків 2
Система безготівкових розрахунків
Система клірингових розрахунків
Система міжбанківських розрахунків SWIFT
Автоматизована система фінансових розрахунків
Грошовий оборот і система розрахунків
Система показників і розрахунків у плануванні
© Усі права захищені
написати до нас