Топ питань
Часова шкала
Чат
Перспективи
MATLAB
З Вікіпедії, вільної енциклопедії
Remove ads
MATLAB — пакет прикладних програм для чисельного аналізу, а також мова програмування, що використовується в цьому пакеті. Система, створена компанією The MathWorks, є засобом для роботи з математичними матрицями, побудови графіків функцій, роботи з алгоритмами, створення робочих оболонок (інтерфейсів користувача[джерело?]) з програмами іншими мовами програмування. Хоча продукт спеціалізується на чисельному аналізі, спеціальні інструментальні засоби працюють з програмним забезпеченням Maple, що робить його повноцінною системою для роботи з алгеброю.
Remove ads
Мова MATLAB
Узагальнити
Перспектива
Опис мови
Мова MATLAB — високорівнева інтерпретована мова програмування, яка включає засновані на матрицях структури даних, широкий спектр функцій, інтегроване середовище розробки, об'єктно-орієнтовані можливості та інтерфейси до програм, написаних іншими мовами програмування.
Програми, написані на MATLAB, бувають двох типів — функції та скрипти. Функції мають вхідні та вихідні аргументи, а також власний робочий простір для зберігання проміжних результатів обчислень та змінних. Скрипти використовують загальний робочий простір. Як скрипти, так і функції зберігаються як текстові файли і компілюються в машинний код динамічно. Існує також можливість зберігати так звані pre-parsed програми — функції та скрипти, перетворені у вигляд, зручний для машинного виконання. Загалом такі програми виконуються швидше за звичайні, особливо якщо функція містить команди побудови графіків.
Основною особливістю мови MATLAB є її широкі можливості для роботи з матрицями, які творці мови висловили в гаслі «думай векторно» (англ. Think vectorized).
Вектори та матриці
Приклад коду, що є частиною функції magic.m, яка генерує магічний квадрат M для непарних значень розміру сторони n:
[J,I] = meshgrid(1:n);
A = mod(I+J-(n+3)/2,n);
B = mod(I+2*J-2,n);
M = n*A + B + 1;
Приклад коду, що завантажує одновимірний масив A значеннями масиву B у зворотному порядку (тільки якщо вектор A визначений, і кількість його елементів збігається з кількістю елементів вектора B):
A(1:end) = B(end:-1:1);
Графіки
MATLAB може створювати тривимірну графіку за допомогою функцій surf, plot3 або mesh.
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2);
Z = sin(R)./R;
Z(R==0) = 1;
mesh(X,Y,Z);
|
![]() |
Поділ графічного вікна здійснюється командою subplot (кількість рядків, кількість стовпців, поточний елемент) (можна уявити, як створення матриці). Побудова поліноміальної регресії для табличних даних можлива через команду Tools > Basic Fitting вікна графічного виводу.[4]
Обчислення площі обмеженої лініями
Обчислення площі обмеженої двома лініями можливе за допомогою команди quad (площа визначеного інтеграла, код див. нижче). Аргументами quad є точки перетину ліній (знаходяться за допомогою команди fzero (перший аргумент різниця між функціями, другий аргумент відрізок або точка де різниця між функціями дорівнює нулю).
clear all
clc
close all
f=@(x) 0.5*x.^2+sin(5*x)-5*x+1
g=@(x) sqrt(x.^2+5.5)
X=-2:0.01:14;
subplot(2,1,1)
plot(X,f(X),'m','LineWidth',2)
hold on
plot(X,g(X),'g','LineWidth',2)
grid
xlabel('x')
ylabel('f,g')
legend('f','g','Location','best')
F=@(x) g(x)-f(x)
subplot(2,1,2)
plot(X,F(X),'b','LineWidth',2)
hold on
plot([-2 14],[0 0],'k','LineWidth',2)
grid
xlabel('x')
ylabel('f,g')
x1=fzero(F,0)
x2=fzero(F,[10,14])
S=quad(F,x1,x2)
Перенесення рядка в командному вікні
У разі довгих формул, коли вираз не поміщається в рядок у програмі, передбачена функція перенесення в командному вікні, здійснювана трьома крапками «…». Крапки набувають синього кольору, курсор на наступному рядку блимає, але знак початку командного рядка (>>) відсутній. Наприклад,
t=sqrt(abs(sin(1.3*pi)/cos(4.6)*tan(0.7*pi)/acot(0.3)))-...
(exp(-0.2)*log(3.8)^1.2)^(1/3)
рівносильно
t=sqrt(abs(sin(1.3*pi)/cos(4.6)*tan(0.7*pi)/acot(0.3)))-(exp(-0.2)*log(3.8)^1.2)^(1/3)
Оформлення графіків
Функція plot() дає змогу змінювати колір і тип лінії, що відображається, зокрема й у логарифмічному масштабі.[5] Для цього використовують додаткові параметри, які записують так: plot(<x>, <y>, <'колір лінії, тип лінії, маркер точок'>).[6] Наприклад,
plot(X,Y,'r--','LineWidth',2, 'Marker','o','MarkerFaceColor','k')
побудує графік червоного кольору (r), штрихпунктирний (--), із товщиною лінії 2 ('LineWidth',2), з маркером у вигляді круга ('Marker','o'), зафарбованого в чорний колір ('MarkerFaceColor','k').
grid
xlabel('x')
ylabel('y')
title('Lamana liniya')
grid створює сітку, xlabel('x') та ylabel('y'), підписує осі координат, title('Lamana liniya') надає графіку заголовок.
Введення векторів (відповідно потім і матриць (масивів))
У квадратних дужках перераховуємо елементи вектора через пропуск (можна розділяти комою) і елементи викладуться в рядок. Наприклад,
X=[2 3 4 3 5 1]
Якщо потрібно викласти елементи в стовпець, то їх слід розділяти крапкою з комою «;» (В принципі, завжди можна застосувати процедуру транспонування). Дуже часто потрібно задати вектор, елементи якого відрізняються на однакову величину — крок. Особливо це актуально, коли будуємо графіки функцій (область побудови цієї функції розділяємо точками з якимсь кроком). Для цієї задачі використовують символ індексації двокрапка «:». Наприклад, від 0 до 10 для кроку 2:
Y=[0:2:10]
(якщо крок дорівнює 1, то його не пишемо, одиницю MATLAB використає, як типове значення). Вектор може бути аргументом функції, наприклад
F=sin(Y)
Поелементне опрацювання масивів
Деякі дії не мають у математиці певного позначення, наприклад поелементне опрацювання елементів масиву, проте в MATLAB подібні позначення є. Якщо потрібно застосувати дію до кожного елемента масиву, то ставиться крапка «.». Наприклад, якщо є вектор F
F=[0 3 4 3 5 1]
його можна поділити на два:
F/2
Отримаємо (кожен елемент вектора буде поділено на 2):
0 1.5000 2.0000 1.5000 2.5000 0.5000
Однак, якщо написати
2/F
Matlab видасть помилку:
Error using /
Matrix dimensions must agree.
Якщо дію потрібно застосувати до кожного елемента вектора, в MATLAB на це вказують крапкою перед знаком дії:
2./F
. Отримаємо:
Inf 0.6667 0.5000 0.6667 0.4000 2.0000
Inf означає, що зроблено спробу ділення на нуль.
Задання функцій
Нехай є два графіки функцій і потрібно визначити їх перетин, далі порахувати площу, обмежену в результаті перетину. У MATLAB функцію користувача можна створити додаванням знака «@» (у круглих дужках пишемо те, від чого ця функція залежить):
f=@(x)0.5*x^2+sin(5*x)-5*x+1
що відповідає функції . Крапка стоїть лише перед степенем (.^), це свідчить, що функція буде вектором. Перед сумою, різницею крапки не ставлять, оскільки додавати й віднімати вектори можна за звичайними правилами. Буде виведено:
f =
function_handle with value:
@(x)0.5*x.^2+sin(5*x)-5*x+1
function_handle повідомляє, що це функція користувача. Приклад коду для виведення діапазону побудови від -2 до 12 з кроком 0,01 (можна вводити як 0.01, так і .01):
X=-2:.01:12;
Крапка з комою «;» наприкінці команди означає, що результат не буде виведено на екран. Для виведення функцій разом в одному вікні можна використати команду hold on:
plot(X,f(X))
hold on
plot(X,g(X))
grid
legend('f','g','Location','best')
legend('f','g','Location','best') каже, що підписи функцій на спільному графіку будуть розташовані в найвільнішому місці.
Remove ads
Застосування
Узагальнити
Перспектива

Математика та обчислення
MATLAB надає користувачеві для аналізу даних багато (кілька сотень) функцій, які покривають практично всі галузі математики, зокрема:
- Матриці та лінійна алгебра: алгебра матриць, лінійні рівняння, власні значення та вектори, сингулярності, факторизація матриць та інші.
- Многочлени та інтерполяція: корені многочленів, операції над многочленами та їх диференціювання, інтерполяція та екстраполяція кривих та інші.
- Математична статистика та аналіз даних: статистичні функції, статистична регресія, цифрова фільтрація, швидке перетворення Фур'є та інші.
- Обробка даних: набір спеціальних функцій, серед яких побудова графіків, оптимізація, пошук нулів, чисельне інтегрування (у квадратурах) та інші.
- Диференціальні рівняння: розв'язування диференціальних та диференціально-алгебричних рівнянь, диференціальних рівнянь із запізненням, рівнянь із обмеженнями, рівнянь у часткових похідних та інші.
- Розріджені матриці: спеціальний клас даних пакета MATLAB, що використовується в спеціалізованих застосуваннях (функція з'явилася 1992 року[7]).
- Цілочисельна арифметика: виконання операцій цілочисленної арифметики в середовищі MATLAB.
Розробка алгоритмів
MATLAB надає зручні засоби розробки алгоритмів, включно з високорівневими з використанням концепцій об'єктно-орієнтованого програмування. Він має всі необхідні засоби інтегрованого середовища розробки, серед яких налагоджувач та профайлер. Функції для роботи з цілими типами даних полегшують створення алгоритмів для мікроконтролерів та інших застосувань, де це необхідно.
Візуалізація даних
У складі пакету MATLAB є багато функцій для побудови графіків, зокрема й тривимірних, візуального аналізу даних та створення анімованих роликів.
Вбудоване середовище розробки дає змогу створювати графічні інтерфейси користувача з різними елементами керування, такими як кнопки, поля введення та інші.
Незалежні програми
Програми MATLAB, як консольні, так і з графічним інтерфейсом користувача, можна зібрати за допомогою модуля MATLAB Compiler у незалежні від MATLAB застосунки або динамічні бібліотеки, для запуску яких на інших комп'ютерах, однак, потрібно встановлювати вільно розповсюджуване середовище MATLAB Runtime[8] (раніше називалася MATLAB Compiler Runtime, MCR)[9].
Зовнішні інтерфейси
Пакет MATLAB включає різні інтерфейси для отримання доступу до зовнішніх підпрограм, написаних іншими мовами програмування, даних, клієнтів та серверів, які спілкуються через технології Component Object Model або Dynamic Data Exchange, а також периферійних пристроїв, які взаємодіють безпосередньо з MATLAB. Багато з цих можливостей відомі під назвою MATLAB API.
COM
Пакет MATLAB надає доступ до функцій, які дають змогу створювати, маніпулювати та видаляти COM-об'єкти (як клієнти, так і сервери). Підтримується також технологія ActiveX. Усі COM-об'єкти належать до спеціального COM-класу пакету MATLAB. Усі програми, що мають функції контролера автоматизації (англ. Automation controller), можуть мати доступ до MATLAB як до сервера автоматизації (англ. Automation server).
.NET
Пакет MATLAB у Microsoft Windows надає доступ до програмної платформи .NET Framework. Є можливість із середовища MATLAB завантажувати .NET-збірки (Assemblies) та працювати з об'єктами .NET-класів. У версії MATLAB 7.11 (R2010b) підтримується .NET Framework версій 2.0, 3.0, 3.5 та 4.0.
DDE
Пакет MATLAB містить функції для доступу до інших застосунків середовища Windows, так само як і цим програмам отримувати доступ до даних MATLAB, за допомогою технології динамічного обміну даними (DDE). Кожен застосунок, який може бути DDE-сервером, має унікальну ідентифікаційну назву. Для MATLAB це назва Matlab.
Вебслужби
У MATLAB є можливість використовувати вебслужби. Спеціальна функція створює клас, який містить методи API вебслужби, що дозволяє звертатися до вебслужби через виклики методів класу.
MATLAB взаємодіє з клієнтом вебслужби за допомогою отримання даних, їх опрацювання та надсилання результату. Підтримуються технології Simple Object Access Protocol (SOAP) та Web Services Description Language (WSDL).
Послідовний порт
Інтерфейс для послідовного порту пакету MATLAB забезпечує прямий доступ до периферійних пристроїв, таких як модеми, принтери та наукове обладнання, що підключається до комп'ютера через послідовний порт (COM-порт). Інтерфейс працює через створення об'єкта спеціального класу для послідовного порту. Наявні методи цього класу дають змогу зчитувати та записувати дані в послідовний порт, використовувати події та обробники подій, а також записувати інформацію на диск комп'ютера в режимі реального часу. Це буває необхідно при проведенні експериментів, симуляції систем реального часу та інших застосувань.
MEX-файли
Пакет MATLAB включає інтерфейс взаємодії із зовнішніми програмами, написаними мовами C і Фортран. Здійснюється ця взаємодія через MEX-файли. Існує можливість виклику підпрограм, написаних на C або Фортрані з MATLAB так, ніби це вбудовані функції пакета. MEX-файли являють собою бібліотеки динамічного підключення, які може завантажити й виконати інтерпретатор, вбудований у MATLAB. MEX-процедури мають змогу викликати вбудовані команди MATLAB.
DLL
Інтерфейс MATLAB, що відноситься до спільних DLL, дає змогу викликати функції, розміщені у звичайних бібліотеках динамічного підключення, прямо з MATLAB. Ці функції повинні мати C-інтерфейс.
Крім того, в MATLAB є можливість отримати доступ до його вбудованих функцій через C-інтерфейс, що дозволяє використовувати функції пакету у зовнішніх застосунках, написаних на C. Ця технологія в MATLAB називається C Engine.
Графіки та програмування графічних інтерфейсів користувача
MATLAB підтримує створення застосунків із властивостями графічних інтерфейсів користувача. Він включає GUIDE (GUI development environment — середовище розробки) для графічного проєктування графічних інтерфейсів користувача. Код:
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
дає такий результат
Програми на MATLAB можуть також будувати тривимірні графіки за допомогою функцій surf, plot3 чи mesh.
[X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);
f = sinc(sqrt((X/pi).^2+(Y/pi).^2));
mesh(X,Y,f);
axis([-10 10 -10 10 -0.3 1])
xlabel('{\bfx}')
ylabel('{\bfy}')
zlabel('{\bfsinc} ({\bfR})')
hidden off
|
[X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);
f = sinc(sqrt((X/pi).^2+(Y/pi).^2));
surf(X,Y,f);
axis([-10 10 -10 10 -0.3 1])
xlabel('{\bfx}')
ylabel('{\bfy}')
zlabel('{\bfsinc} ({\bfR})')
| |
Цей код створює каркасну тривимірну модель двовимірної ненормованої функції sinc | Цей код створює тривимірну поверхню на основі двовимірної ненормованої функції sinc: | |
![]() |
![]() |
Remove ads
Набори інструментів
Узагальнити
Перспектива
Для MATLAB є можливість створювати спеціальні набори інструментів (англ. toolbox), що розширюють його функціональність. Набори інструментів є колекцією функцій та об'єктів, написаних мовою MATLAB для розв'язування задач певного класу. Mathworks постачає набори інструментів, які використовуються в багатьох галузях, серед яких:
- Цифрова обробка сигналів, зображень та даних: Signal Processing Toolbox (з'явився 1987 року[7]), DSP System Toolbox, Image Processing Toolbox (з'явився 1993 року[7]), Wavelet Toolbox, Communications System Toolbox - набори функцій і об'єктів для розв'язування широкого спектра задач обробки сигналів, зображень, проєктування цифрових фільтрів і систем зв'язку.
- Системи керування: Control Systems Toolbox, Robust Control Toolbox, System Identification Toolbox, Model Predictive Control Toolbox, Model-Based Calibration Toolbox — набори функцій і об'єктів, які полегшують аналіз і синтез динамічних систем, проєктування, моделювання та ідентифікація[ru] систем керування, серед яких сучасні алгоритми керування, такі як робастне керування, H∞-керування, ЛМН-синтез, μ-синтез та інші.
- Фінансовий аналіз: Econometrics Toolbox, Financial Instruments Toolbox, Financial Toolbox, Datafeed Toolbox, Trading Toolbox — набори функцій і об'єктів, що дають змогу швидко й ефективно збирати, опрацьовувати й передавати різну фінансову інформацію.
- Аналіз та синтез географічних карт, включно з тривимірними: Mapping Toolbox.
- Збір та аналіз експериментальних даних: Data Acquisition Toolbox, Image Acquisition Toolbox, Instrument Control Toolbox, OPC Toolbox — набори функцій і об'єктів для зберігання й опрацювання даних, отриманих у ході експериментів, також і в реальному часі. Підтримується широкий спектр наукового та інженерного вимірювального обладнання.
- Візуалізація та подання даних: Virtual Reality Toolbox — дає змогу створювати інтерактивні світи та візуалізувати наукову інформацію за допомогою технологій віртуальної реальності й мови VRML.
- Засоби розробки: MATLAB Builder for COM, MATLAB Builder for Excel, MATLAB Builder for NET, MATLAB Compiler, HDL Coder — інструменти для створення незалежних програм у середовищі MATLAB.
- Взаємодія із зовнішніми програмними продуктами: MATLAB Report Generator, Excel Link, Database Toolbox, MATLAB Web Server, Link for ModelSim — набори функцій для зберігання даних різних видів так, щоб з ними могли працювати інші програми.
- Бази даних: Database Toolbox — інструменти для роботи з базами даних.
- Наукові та математичні пакети: Bioinformatics Toolbox, Curve Fitting Toolbox, Fixed-Point Toolbox, Optimization Toolbox, Global Optimization Toolbox, Partial Differential Equation Toolbox, Statistics And Machine Learning Toolbox, RF Toolbox — набори спеціалізованих математичних функцій і об'єктів, що дають змогу розв'язувати широкий спектр наукових та інженерних задач, серед яких розробка генетичних алгоритмів, задачі в частинних похідних, цілочисельні задачі, оптимізація систем та інші.
- Нейронні мережі: Neural Network Toolbox — інструменти для синтезу та аналізу нейронних мереж.
- Нечітка логіка: Fuzzy Logic Toolbox — інструменти для побудови та аналізу нечітких множин.
- Символьні обчислення: Symbolic Math Toolbox (з'явився 1993 року[7])- інструменти для символьних обчислень із можливістю взаємодії зі символьним процесором програми Maple.
Крім перелічених, існують тисячі інших наборів інструментів для MATLAB, написаних іншими компаніями та ентузіастами.
Remove ads
Альтернативні пакети
Існує багато програмних пакетів для розв'язування задач чисельного аналізу. Багато таких пакетів належать до вільного програмного забезпечення.
Сумісні з MATLAB на рівні мови програмування
- GNU Octave
- Scilab
- FreeMat[en]
Близькі за функціональністю
- Julia
- R, S і SPlus.
- APL та її нащадки: наприклад J
- Python при використанні пакету програм Python(x,y), а також із бібліотеками NumPy, SciPy і matplotlib реалізує подібні можливості. Також, середовище Enthought Canopy.
- IDL (англ. Interactive Data Language), колись була комерційним конкурентом MATLAB, зараз залишається серйозним конкурентом у багатьох прикладних галузях, хоча її частка на ринку програмних продуктів для чисельного аналізу різко впала.
- Fortress[en], мова програмування, створена Sun Microsystems, — спадкоємець Фортрану, але з ним не сумісна.
- В разі необхідності розробки великих проєктів для чисельного аналізу можливе використання мов програмування загального призначення, які підтримують статичну типізацію та модульну структуру, наприклад, Modula-3[en], Haskell, Ада, Java. При цьому рекомендується використовувати відомі в науково-інженерному середовищі спеціалізовані бібліотеки (див. посилання).
Remove ads
Історія
MATLAB отримав назву від «MATrix LABoratory», яку заснував наприкінці 1970-х Клів Молер, який пізніше став керівником департаменту обчислювальних наук Університету Нью-Мексико. Він розробив систему, щоби надати своїм студентам доступ до пакетів Linpack та Eispack без необхідності опановувати Фортран. MATLAB швидко набув популярності в інших університетах і привернув увагу прикладних математиків. Інженер Джон Літтл уподобав цей продукт, коли 1983 року відвідав Молера у Стенфордському університеті. Прогнозуючи комерційний успіх MATLAB, він приєднався до Молера і Стіва Бангерта. Вони переписали MATLAB на С і 1984 року заснували компанію The MathWorks. Переписані бібліотеки стали відомими як JACKPAC. Поза визнанням викладачів лінійної алгебри та числового аналізу, MATLAB визнали де-факто спеціалісти з опрацювання цифрових зображень (напр. для томографії).
Remove ads
Див. також
Вікісховище має мультимедійні дані за темою: MATLAB
Примітки
Джерела
Література
Посилання
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads