MATLAB (matrix laboratory) е бројчено анализаторска околина и програмски јазик. Создаден е од MathWorks MATLAB овозможува лесна манипулација со матрици, исцртување на функции, визуелизација на податоци, имплементација на алгоритми, создавање на кориснички работни средини, и поврзување со програми во други јазици. Вклучувајќи и C, C++, Java и Fortfan. Инаку MATLAB е наменет првенствено за бројчен компјутери, изборниот алатникот користи MuPAD симболична мотор, овозможувајќи пристап до симболички компјутерски способности. Додатен пакет, Simulink додава графички домеин симулатор и Модел-засновани дизајн за динамичност и Вградени системи. Во 2004, MATLAB имасе околу еден милион корисници низ индустријата и академии Richard Goering, "Matlab edges closer to electronic design automation world," EE Times, 10/04/2004.MATLAB корисниците доаѓаат од разлицни околини од инженерство, наука, и економија.MATLAB широко се користи во академските и истражувачки институции, како и индустриски претпријатија.
Историја Клив Молер е директор на computer-science оддел на Универзитетот на Ново Мексико, започна да се развива MATLAB во доцните 70-ти. Тој го дизајниран да им даде на своите ученици пристап до LINPACK и EISPACK кои морале да научат FORTRAN. Наскоро се шири во другите универзитети и се најде силна публика во рамките на применета математичка заедница.Џек Литл инженер, бил изложен на посетата на Универзитетот Стенфорд во 1983 година. Препознавајќи го нејзиниот комерцијални потенцијал, тој се приклучи со молер и Стив Багерт. Тие го прена пишале MATLAB во C и во основаната MathWorks во 1984 година за да продолжи нејзиниот развој. Овие новонапишани библиотеки биле познати како JACKPAC.Во 2000 година, MATLAB е пренапишан за да користи понов збир на библиотеки за манипуација со мартици, LAPACK.Note from Cleve Moler in a Mathworks newsletter MATLAB за првпат беше усвоена од страна на истражувачи и практичари во контрола на инженерство.Мал специјалитет, но брзо се шири во многу други области. Таа е сега исто така се користи во образованието, особено во наставата на линеарна алгебра и бројчени анализи, и е популарен меѓу научниците вклучени во обработка на сликата . Синтакса MATLAB апликацијата е изграден околу јазикот MATLAB, а повеќето користење на MATLAB вклучува пишување MATLAB код во командниот прозорец (како интерактивен математички штит) или извршување на текстуални податотеки кои содржат MATLAB код и функции . Променливи Променливи се дефинирани со користење на оператор, =. MATLAB е слабо напишан програмскиот јазик. Тоа е слабо напишан јазик, бидејќи видовите имплицитно се претвораат Documentation on MATLAB in relation to other languages. Тоа е динамички напишан јазик, бидејќи променливи можат да бидат доделени без прогласување на нивниот вид, освен ако тие треба да се третира како симболички објекти,sym function Documentation for the MATLAB Symbolic Toolbox и дека нивниот тип може да се промени. Вредности може да дојде од константи, од пресметката која вклучени вредностите на другите променливи, или од излезот на функцијата. На пример: >> x = 17 x = 17 >> x = 'hat' x = hat >> y = x + 0 y = 104 97 116 >> x = [3*4, pi/2] x = 12.0000 1.5708 >> y = 3*sin(x) y = -1.6097 3.0000 Вектори / Матрици Како што е предложено од страна на нејзиното име (контракција на „Матрична лабораторија“), MATLAB може да се создаде и манипулира низи на 1 (вектор), 2 (матрици), или повеќе димензии. Во жаргонот MATLAB, вектор се однесува на една димензионална (1 × N или N × 1) матрица, честопати се нарекува низа во други програмски јазици. А матрица генерално се однесува на 2-димензионална низа, односно m × n низа каде m и n се поголеми од 1. Низи со повеќе од две димензии се наведени како повеќедимензионална низа. Низи се основен тип и многу стандардни функции вообичаено поддржуваат низа операции и им овозможува работа на низи без експлицитна јамки. Едноставна низа е дефиниран со користење на синтаксата: init:increment:terminator. На пример: >> array = 1:2:9 array = 1 3 5 7 9 дефинира променлива со име array (или доделува нова вредност на постоечките променлива со име array), која низа се состои од вредности: 1, 3, 5, 7 и 9. Тоа е, низата започнува во 1 (' ' init ' ' вредност), постепено со секој чекор од претходната вредност од 2 (' ' increment ' ' вредност), и запира кога ќе достигне (или да се избегне поголема) 9 (' ' terminator ' ' вредност). >> array = 1:3:9 array = 1 4 7 ' ' increment ' ' вредност всушност може да биде оставенa надвор од оваа синтакса (заедно со една од две точки), да се користи стандардната вредност на 1. >> ari = 1:5 ari = 1 2 3 4 5 доделува на променлива со име ari низа со вредности 1, 2, 3, 4 и 5, од стандардната вредност на 1 се користи како incrementer. Индексирањето е едно-засновано, кое е вообичаена конвенција за матрици во математиката, иако не за некои програмски јазици како C, C + +, Java и. Матрици може да се дефинира со одвојување на елементи на спорот со празно место или запирка и користење на точка-запирка за да го прекине секој ред. Список на елементи треба да бидат опкружени со квадратни загради: []. Заграда: () се користи за пристап до елементите (тие исто така се користи за означување функција на аргумент листа).
>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
>> A(2,3) ans = 11
Sets of indices can be specified by expressions such as "2:4", which evaluates to [2, 3, 4]. For example, a submatrix taken from rows 2 through 4 and columns 3 through 4 can be written as: >> A(2:4,3:4) ans = 11 8 7 12 14 1 Групи на индекси може да се специфицира со изрази како што се "2:4", кој се евалуира до [2, 3, 4]. На пример, подматрица земена од редови од 2 до 4 и колони од 3 до 4 може да се запише како: >> A(2:4,3:4) ans = 11 8 7 12 14 1 А квадратни идентични матрици на големина n може да бидат генерирани со помош на функцијата eye, и матрици од која било големина со нули или оние кои може да бидат генерирани со функциите нули и единици, соодветно. >> eye(3) ans = 1 0 0 0 1 0 0 0 1 >> zeros(2,3) ans = 0 0 0 0 0 0 >> ones(2,3) ans = 1 1 1 1 1 1
Повеќето MATLAB функции може да го прифати матрици и ќе се применува на секој елемент. На пример, mod(2*J,n) ќе се мултиплицираат секој елемент во "Ѕ" со 2, а потоа се намали секој елемент модул "n". MATLAB не вклучуваат стандардни "for" и "while" наредби, но (како во други слични апликации како што се R), со користење на векторизација нотација често се произведува кодот кој е побрз да се изврши. Овој код, изваден од функцијата magic.m, создава magic square М за чудни вредности на n (MATLAB функција meshgrid тука се користи да се генерираат квадратни матрици I и J содржејки 1: 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;
Структури MATLAB има структурни типови на податоци. Бидејќи сите променливи во MATLAB се низи, поадекватно име е "структурна низа", каде секој елемент од низата има исти имиња. Покрај тоа, MATLAB поддржува динамичка обласни имиња (област look-ups by name, област manipulations, итн.) За жал, MATLAB JIT не поддржува MATLAB структури, па затоа едноставно занимаваат на различни променливи во структурата. Справување со функција MATLAB поддржува елементи на ламбда-анализа со воведување на функција препораки, со кои се остваруваат во .m податотеки или анонимни / вгнездени функции. Ако повикате вашите податоци "statistics.clever" или (.dat, .txt whatever) Можете да ги зачувате податоци со создавање на табела со функции како ова: function nanotabl(b) d=load(b);
figure('Position', [100, 300, 600, 460],... 'Name', 'TablePlot',... % Title figure 'NumberTitle', 'off',... % Do not show figure number 'MenuBar', 'none'); % Hide standard menu bar menus %Converting to Matrix X=d; %Inverse Matrix A=X.';
S=size(A,2); N=round(S/2); M=size(A,1); B1 = A(1:M, 1:N); C1 = A(1:M, N+1:S);
B=B1'; C=C1';
% Дефинирање параметри за uitable (колекција headers are fictional) colnames = {'Banana', 'Apple', 'Orange', 'Pinapple', 'Strawberry'}; %colnames = {'Longitude', 'Latitude', 'Min', 'Max', 'Mean','Longitude', 'Latitude', 'Min', 'Max', 'Mean'}; % All column contain numeric data (integers, actually) colfmt = {'numeric', 'numeric', 'numeric', 'numeric', 'numeric'}; %colfmt = {'numeric', 'numeric', 'numeric', 'numeric', 'numeric','numeric', 'numeric', 'numeric', 'numeric', 'numeric'};; % Забрана за уредување вредности (но ова може да се промени) coledit = [false false false false false]; %coledit = [false false false false false false false false false false]; % Set columns all the same width (must be in pixels) colwdt = {80 80 80 80 80 }; %colwdt = {80 80 80 80 80 80 80 80 80 80}; foregroundColor = [1 1 1]; backgroundColor = [.4 .1 .1; .1 .1 .4]; % Создај uitable на левата страна на фигурата htable = uitable ('Units', 'normalized',...
'Position', [0 0 .5 1],... 'Data', B,... 'ColumnName', colnames,... 'ColumnFormat', colfmt,... 'ForegroundColor', foregroundColor,... 'BackgroundColor', backgroundColor,... 'ColumnWidth', colwdt,... 'ColumnEditable', coledit,... 'ToolTipString',... 'Select cells to highlight them on the plot',... 'CellSelectionCallback',{@select_callback}); % 'Позиција', [0.025 0.03 0.375 0.92],...gtable = uitable('Units', 'normalized',... 'Position', [.5 0 0.5 1],... 'Data', C,... 'ColumnName', colnames,... 'ColumnFormat', colfmt,... 'ForegroundColor', foregroundColor,... 'BackgroundColor', backgroundColor,... 'ColumnWidth', colwdt,... 'ColumnEditable', coledit,... 'ToolTipString',... 'Select cells to highlight them on the plot',... 'CellSelectionCallback',{@select_callback}); Тогаш се пишуваат овие две линии b = 'statistics.clever'; tableD(b) Ќе создадеш табела. Поврзано: http://www.mathworks.com/matlabcentral/fileexchange/authors/51707
Kласи Иако MATLAB има класи, синтаксата и повикувачките конвенции се значително различни од другите јазици. MATLAB има вредност класи и референтни класи, во зависност од тоа дали класа се смета како супер-класа (за референца класи) или не (за вредност класи). Метод повик однесување е различно помеѓу вредноста и референтната класа. На пример, повик кон метод object.method(); може да ја смени било кој член на објект само ако објект е пример на повикување класа. Графика и графички кориснички интерфејс за програмирање
MATLAB поддржува развој на апликации со графички кориснички интерфејс одлики. MATLAB вклучува GUIDE-водич (GUI развој на животната средина) за графички дизајнирани GUIs. .Исто така, има тесно интегриран графикон-заговор одлики. На пример, функција plot може да се користи за да создаде графиконот од два вектора x и y. Кодот: x = 0:pi/100:2*pi; y = sin(x); plot(x,y) ја произведува следнива фигура на синусна функција:
А програма MATLAB може да произведе три-димензионалнa графика со користење на функции surf, plot3 or 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})') Со овој код се добива wireframe 3D заплетот на две-димензионални sinc функции: Со овој код се добива surface 3D заплетот на две-димензионални sinc функции: Во MATLAB, графички кориснички интерфејси може да се programed со дизајн GUI средина (GUIDE) алатка. Објектно-ориентирано програмирање
Поддршка MATLAB за објектно-ориентирано програмирање вклучува класи, наследување, виртуелен испраќање, пакети, pass-by-value семантики, и pass-by-reference семантика. source lang="matlab"> classdef hello methods function doit(this) disp('Hello!') end end end </source> Кога се ставаат во податотека со име hello.m, ова може да се изврши со следниве команди: >> x = hello; >> x.doit; Hello!
Сличности со други јазици