MATLAB (matrix laboratory) е бројчено анализаторска околина и програмски јазик. Создаден е од MathWorks MATLAB овозможува лесна манипулација со матрици, исцртување на функции, визуализација на податоци, имплементација на алгоритми, создавање на кориснички работни средини, и поврзување со програми во други јазици. Вклучувајќи и C, C++, Java и Fortfan. Инаку MATLAB е наменет првенствено за бројчен компјутери, изборниот алатникот користи MuPAD симболична мотор, овозможувајќи пристап до симболички компјутерски способности. Додатен пакет, Simulink додава графички домеин симулатор и Модел-засновани дизајн за динамичност и Вградени системи. Во 2004, MATLAB имасе околу еден милион корисници низ индустријата и академии [1].MATLAB корисниците доаѓаат од разлицни околини од инженерство, наука, и економија.MATLAB широко се користи во академските и истражувачки институции, како и индустриски претпријатија.

MATLAB
MATLAB
Податотека:MATLAB-R2008a-for-Linux.png
MATLAB R2011a screenshot
ПрограмериMathWorks
Прог. јазикC, Java
Опер. системCross-platform[2]
ВидTechnical computing
ЛиценцаProprietary
Мреж. местоMATLAB product page
'
Парадигма:multi-paradigm: imperative, procedural, object-oriented, array
Прво појавување:late 1970s
Типови:dynamic, weak
Оперативен систем:Cross-platform

Историја

уреди

Клив Молер е директор на computer-science оддел на Универзитетот на Ново Мексико, започна да се развива MATLAB во доцните 70-ти.[3] Тој го дизајниран да им даде на своите ученици пристап до LINPACK и EISPACK кои морале да научат FORTRAN. Наскоро се шири во другите универзитети и се најде силна публика во рамките на применета математичка заедница.Џек Литл инженер, бил изложен на посетата на Универзитетот Стенфорд во 1983 година. Препознавајќи го нејзиниот комерцијални потенцијал, тој се приклучи со молер и Стив Багерт. Тие го прена пишале MATLAB во C и во основаната MathWorks во 1984 година за да продолжи нејзиниот развој. Овие новонапишани библиотеки биле познати како JACKPAC[4].Во 2000 година, MATLAB е пренапишан за да користи понов збир на библиотеки за манипуација со мартици, LAPACK.[5] MATLAB за првпат беше усвоена од страна на истражувачи и практичари во контрола на инженерство.Мал специјалитет, но брзо се шири во многу други области. Таа е сега исто така се користи во образованието, особено во наставата на линеарна алгебра и бројчени анализи, и е популарен меѓу научниците вклучени во обработка на сликата [3].

Синтакса

уреди

MATLAB апликацијата е изграден околу јазикот MATLAB, а повеќето користење на MATLAB вклучува пишување MATLAB код во командниот прозорец (како интерактивен математички штит) или извршување на текстуални податотеки кои содржат MATLAB код и функции [6].

Променливи

уреди

Променливи се дефинирани со користење на оператор, =. MATLAB е слабо напишан програмскиот јазик. Тоа е слабо напишан јазик, бидејќи видовите имплицитно се претвораат[7]. Тоа е динамички напишан јазик, бидејќи променливи можат да бидат доделени без прогласување на нивниот вид, освен ако тие треба да се третира како симболички објекти,[8] и дека нивниот тип може да се промени. Вредности може да дојде од константи, од пресметката која вклучени вредностите на другите променливи, или од излезот на функцијата. На пример:

>> 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. Индексирањето е едно-засновано,[9] кое е вообичаена конвенција за матрици во математиката, иако не за некои програмски јазици како 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.[10] .Исто така, има тесно интегриран графикон-заговор одлики. На пример, функција 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) алатка.[11]

Објектно-ориентирано програмирање

уреди

Поддршка MATLAB за објектно-ориентирано програмирање вклучува класи, наследување, виртуелен испраќање, пакети, pass-by-value семантики, и pass-by-reference семантика.[12] source lang="matlab"> classdef hello

   methods
       function doit(this)
           disp('Hello!')
       end
   end

end </source> Кога се ставаат во податотека со име hello.m, ова може да се изврши со следниве команди:

>> x = hello;
>> x.doit;
Hello!

Сличности со други јазици

уреди

MATLAB може да повика функции напишани во C програмскиот јазик или Fortran. А wrapper функција е создадена овозможувајќи MATLAB типовите на податоци да се донесуваат и да се вратат. Динамично loadable објект податотеки создадени од составувањето на такви функции се нарекува "MEX-датотеки" (за M ATLAB извршна).[13][14] Библиотеки пишувани во Java, ActiveX or .NET да биде директно повикани од MATLAB и многу MATLAB библиотеки (на пример XML или SQL поддршка) се имплементирани како обвивки околу Јава или ActiveX библиотеки. Повикувајќи MATLAB од Јава е многу покомплицирано, но може да се направи со MATLAB проширување, V кои се продава одделно од MathWorks, или со користење на недокументирани механизам наречен JMI (Јава-за-MATLAB интерфејс),[15] кои не треба да се мешаат со неповрзани Јава интерфејс, кој е исто така, повика JMI. Како алтернативи на MuPAD засновани Симболична математичка лента со алатки достапни од MathWorks, MATLAB може да биде поврзан со Maple или Математика.[16]

[17]

Лиценца

уреди

MATLAB е комерцијален производ на MathWorks, така што корисниците се предмет на vendor lock-in.[1][18] Иако MATLAB Builder може да се распореди MATLAB функции како библиотека податотеки кои може да се користи со.NET или Java апликација bilding enviroment, идниот развој сè уште ќе биде врзан со MATLAB програмскиот јазик. Секоја алатник се купува одделно. Ако се бара еволуцона лиценца, на MathWorks одделот за продажба бара детални информации за проектот за кој MATLAB треба да се оцени. Целокупниот процес на добивање лиценца е скапо во однос на време и пари [се бара извор]. Ако е призната(што често е), еволуционата лиценца важи за 2-4 недели.Студентска верзија на MATLAB е исто така достапна. Се известува дека ЕУ антимонополските регулатори се испитуваат дали Mathworks одби да ja продаде лиценците на некој конкурент.[19]

Aлтернативи

уреди

Поврзано: Список на бројчен анализа на софтвер и споредба на бројчена анализа на софтвер MATLAB има голем број на конкуренти.[20] Комерцијалните конкуренти вклучуваат Математика, Maple, NAG, и IDL. Постојат, исто така, слободен софтвер со отворен код алтернативи за MATLAB, особено GNU Octave, FreeMat и Scilab кои се наменети да бидат главно компатибилни со јазикот MATLAB. Меѓу другите јазици кои ги третираат низите како основни субјекти (низа програмски јазици) се APL и Ј, FORTRAN 90 и повисоко, како и статистички јазик S (главната имплементации на S се S-PLUS, и популарни програми со отворен код: јазик R) . Исто така, постојат неколку библиотеки за да додадете слична функционалност на постоечките јазици, како што се IT++ за C + +, Perl Data јазик за Perl, ScalaLab за Scala и SciPy (заедно со NumPy и Matplotlib) за Python.

Историја на пуштање во употреба

уреди
Version[21] Release name Number Bundled JVM Year Release Date Notes
MATLAB 1.0 1984
MATLAB 2 1986
MATLAB 3 1987
MATLAB 3.5 1990 Ran on MS-DOS but required at least a 386 processor. Version 3.5m required math coprocessor
MATLAB 4 1992
MATLAB 4.2c 1994 Ran on Windows 3.1. Required a math coprocessor
MATLAB 5.0 Volume 8 1996 December, 1996 Unified releases across all platforms.
MATLAB 5.1 Volume 9 1997 May, 1997
MATLAB 5.1.1 R9.1
MATLAB 5.2 R10 1998 March, 1998
MATLAB 5.2.1 R10.1
MATLAB 5.3 R11 1999 January, 1999
MATLAB 5.3.1 R11.1 November, 1999
MATLAB 6.0 R12 12 1.1.8 2000 November, 2000 First release with bundled Java Virtual Machine (JVM).
MATLAB 6.1 R12.1 1.3.0 2001 June, 2001
MATLAB 6.5 R13 13 1.3.1 2002 July, 2002
MATLAB 6.5.1 R13SP1 2003
MATLAB 6.5.2 R13SP2
MATLAB 7 R14 14 1.4.2 2004 June, 2004
MATLAB 7.0.1 R14SP1 October, 2004
MATLAB 7.0.4 R14SP2 1.5.0 2005 March 7, 2005
MATLAB 7.1 R14SP3 1.5.0 September 1, 2005
MATLAB 7.2 R2006a 15 1.5.0 2006 March 1, 2006
MATLAB 7.3 R2006b 16 1.5.0 September 1, 2006 HDF5-based MAT-file support
MATLAB 7.4 R2007a 17 1.5.0_07 2007 March 1, 2007
MATLAB 7.5 R2007b 18 1.6.0 September 1, 2007 Last release for Windows 2000 and PowerPC Mac. License Server support for Windows Vista[22]
MATLAB 7.6 R2008a 19 1.6.0 2008 March 1, 2008
MATLAB 7.7 R2008b 20 1.6.0_04 October 9, 2008
MATLAB 7.8 R2009a 21 1.6.0_04 2009 March 6, 2009 First release for 32-bit & 64-bit Microsoft Windows 7.
MATLAB 7.9 R2009b 22 1.6.0_12 September 4, 2009 First release for Intel 64-bit Mac, and last for Solaris SPARC.
MATLAB 7.9.1 R2009bSP1 1.6.0_12 2010 April 1, 2010
MATLAB 7.10 R2010a 23 1.6.0_12 March 5, 2010 Last release for Intel 32-bit Mac.
MATLAB 7.11 R2010b 24 1.6.0_17 September 3, 2010
MATLAB 7.11.1 R2010bSP1 1.6.0_17 2011 March 17, 2011
MATLAB 7.12 R2011a 25 1.6.0_17 April 8, 2011
MATLAB 7.13 R2011b 26 1.6.0_17 September 1, 2011
MATLAB 7.14 R2012a 27 1.6.0_17 2012 March 1, 2012
MATLAB 8 R2012b 28 September 11, 2012 First release with Ribbon interface.

Број (или број на издавање) е верзијата пријавени од страна на конкурентот лиценца: менаџер програма FlexLM.

Екстензии на податотеки

уреди

Наставки

уреди
  • .fig

MATLAB фигура

  • .m

MATLAB функција, скрипта

  • .mat

MATLAB бинарен податотека за зачувување на променливи

  • .mex...

MATLAB извршна (платформа специфични, на пример ". .mexmac" за Mac ". mexglx" за Linux, итн)

  • .p

MATLAB содржина ,M податотека (резултат е ())


Трета страна

уреди
  • .jkt

графичкиот процесор генериран од изолација за MATLAB (AccelerEyes)

  • .mum

отворено студио за моделирање (AmsterCHEM)

Easter eggs

уреди

Неколку Easter eggs постојат во MATLAB.[23] Тие вклучуваат скриени слики, и рандом шеги. На пример, пишување во "spy" ќе генерира слика на шпиони од Spy vs Spy.Предлошка:Discuss. [Пишување "why" ќе добие филозофски одговор. Други команди вклучуваат "penny", "toilet", "image" и"life".

Поврзано

уреди

Белешки

уреди
  1. 1,0 1,1 Richard Goering, "Matlab edges closer to electronic design automation world," EE Times, 10/04/2004
  2. „Requirements“. MathWorks. Посетено на 2010-06-07.[мртва врска]
  3. 3,0 3,1 Cleve Moler, the creator of MATLAB (2004). „The Origins of MATLAB“. Архивирано од изворникот на 2012-10-16. Посетено на April 15, 2007.
  4. „MATLAB Programming Language“. Архивирано од изворникот на 2017-01-03. Посетено на 2010-12-17.
  5. Note from Cleve Moler in a Mathworks newsletter Cleve Moler, the creator of MATLAB (2000). „MATLAB Incorporates LAPACK“. Посетено на December 20, 2008.[мртва врска]
  6. „MATLAB technical documentation“. Mathworks.com. Посетено на 2010-06-07.[мртва врска]
  7. [1][мртва врска] Documentation on MATLAB in relation to other languages
  8. sym function Архивирано на 3 март 2009 г. Documentation for the MATLAB Symbolic Toolbox
  9. „MATLAB Online Documentation“. Mathworks.com. Посетено на 2010-06-07.[мртва врска]
  10. http://www.mathworks.com/discovery/matlab-gui.html
  11. Smith, S. T. (2006). Matlab: Advanced GUI Developmen. Dog Ear Publishing. ISBN 1-59858-181-3, 9781598581812 Проверете ја вредноста |isbn=: invalid character (help).
  12. „MATLAB Class Overview“. Mathworks.com. Посетено на 2010-06-07.
  13. „MATLAB external interface guide“. Посетено на 2008-05-25.[мртва врска]
  14. Spielman, Dan (2004-02-10). „Connecting C and Matlab“. Yale University, Computer Science Department. Посетено на 2008-05-20.
  15. „Java-to-Matlab Interface“. Undocumented Matlab. 2010-04-14. Архивирано од изворникот на 2015-09-05. Посетено на 2010-06-07.
  16. „Java-to-Matlab Interface“. Undocumented Matlab. 2010-04-14. Архивирано од изворникот на 2015-09-05. Посетено на 2010-06-07. Библиотеките исто така постојат за увоз и извоз MathML.
  17. http://www.nl.mathworks.com/matlabcentral/fileexchange/7709-mathml-importexport?s_cid=wiki_matlab_11
  18. Jan Stafford, "The Wrong Choice: Locked in by license restrictions Архивирано на 23 јуни 2009 г.," SearchOpenSource.com, 21 May 2003
  19. Mathworks software license probed by EU antitrust regulators Bloomberg news
  20. Comparison of mathematical programs for data analysis Архивирано на 18 мај 2016 г. ScientificWeb
  21. Cleve Moler (2006). „The Growth of MATLAB and The MathWorks over Two Decades“ (PDF). Архивирано од изворникот (PDF) на 2012-01-19. Посетено на August 18, 2008.
  22. „Do MATLAB versions prior to R2007a run under Windows Vista?“. 2010. Посетено на February 8, 2011.
  23. http://www.mathworks.com/matlabcentral/answers/2001-what-matlab-easter-eggs-do-you-know?s_cid=wiki_matlab_14

Наводи

уреди
  • Gilat, Amos (2004). MATLAB: An Introduction with Applications 2nd Edition. John Wiley & Sons. ISBN 978-0-471-69420-5.
  • Quarteroni, Alfio; Fausto Saleri (2006). Scientific Computing with MATLAB and Octave. Springer. ISBN 978-3-540-32612-0.
  • Ferreira, A.J.M. (2009). MATLAB Codes for Finite Element Analysis. Springer. ISBN 978-1-4020-9199-5.
  • Lynch, Stephen (2004). Dynamical Systems with Applications using MATLAB. Birkhäuser. ISBN 978-0-8176-4321-8.

Додатни врски

уреди
 
Wikibooks
Англиските Викикниги нудат повеќе материјал на тема:


Предлошка:Numerical analysis software Предлошка:Computer algebra systems Предлошка:Statistical software Предлошка:Image Processing Software