**MATLAB** (ingelesezko *MATrix LABoratory* —«matrize laborategia»— izen osoaren laburtzapena) zenbakizko konputazioko sistema bat da, bere programazio-lengoaia propioarekin (M lengoaia) garapen ingurune integratua (IDE) eskaintzen duena. Erabilgarri dago Unix, Windows, macOS eta GNU/Linux plataformetarako.

Bere oinarrizko ezaugarrien artean daude matrizeen manipulazioa, datuen eta funtzioen irudikapena, algoritmoak ezartzea, erabiltzaile interfazeak sortzea ( GUI ) eta beste hizkuntza batzuetako programekin eta beste hardware gailu batzuekin komunikatzea. MATLAB paketeak bere gaitasunak zabaltzen dituzten bi tresna osagarri ditu, hau da, Simulink (domeinu anitzeko simulazio plataforma) eta GUIDE (erabiltzaile interfazearen editorea - GUI). Gainera, MATLABen gaitasunak tresna kutxekin zabaldu ditzakezu; eta Simulink- enak bloke paketeekin (bloke multzoak).

Unibertsitateetan eta ikerketa eta garapen zentroetan asko erabiltzen den softwarea da. Azken urtetan ezaugarri kopurua handitu egin da, esate baterako, seinale digitalen prozesadoreak zuzenean programatzea edo VHDL kodea sortzea.

2004an, MATLAB milioi bat lagunek baino gehiagok erabiltzen zutela kalkulatu zen esparru akademiko eta enpresarialetan.

MATLAB aplikazioak bere programazio lengoaian garatzen dira. Hizkuntza hau interpretatuta dago, eta ingurune interaktiboan zein script fitxategi baten bidez (\* .m fitxategiak) exekutatu daiteke. Hizkuntza honek bektore eta matrizearen eragiketak, funtzioak, lambda kalkulua eta objektuetara bideratutako programazioa ahalbidetzen ditu.

Historia
--------

MATLAB Cleve Moler matematikariak eta informatika programatzaileak asmatu zuten. Matematikaren aldeko ideia 1960ko bere doktoretza tesian oinarritu zen. Moler Mexiko Berriko Unibertsitatean matematikako irakasle bihurtu zen, eta bere ikasleentzat MATLAB garatzen hasi zen hobby gisa. 1967an, MATLAB hasierako programazio linealeko aljebra garatu zuen George Forsythe bere tesi bakarreko aholkulariarekin. 1971ko ekuazio linealetarako Fortran kodea jarraitu zitzaion.

Hasieran (1.1 bertsioaren aurretik), MATLAB ez zen programazio-lengoaia bat, baizik eta matrize interaktibo kalkulagailu sinple bat. Ez zegoen ez programarik, ez tresnarik, ez grafikorik. Eta ODErik ezta FFTs-rik ez. 

1970eko hamarkadaren amaieran egin zen lehen bertsio goiztiarra, softwarea publikoari 1979ko otsailean Kaliforniako Naval Postgraduate Schoolen argitaratu zitzaion lehen aldiz. MATLAB bertsio Early matrize kalkulagailu sinpleak izan ziren, aurretik eraikitako 71 funtzioekin. Garai hartan, MATLAB doan banatu zen unibertsitateetan. Molerrek kopiak utziko zituen bisitatu zituen unibertsitateetan, eta softwarea ondorengo indartsu bat garatu zen unibertsitate campusetako matematika zerbitzuetan.

1980ko hamarkadan, Cleve Molerrek John N. Little ezagutu zuen. MATLAB C formatuan berprogramatzea erabaki zuten eta IBMko idazmahaietan merkaturatu zuten, garai hartan mainframe ordenagailuak ordezten ari zirenak.  John Little eta Steve Bangert programatzaileek MATLAB berriro programatu zuten C kategorian, MATLAB programazio-lengoaia sortu zuten, eta toolboxetarako ezaugarriak garatu zituzten.

Sintaxia
--------

MATLAB aplikazioa MATLAB programazio lengoaiaren inguruan eraikitzen da. MATLAB aplikazioaren erabilera komunak barne hartzen du "agindu Window" maskor matematiko interaktibo edo testu-fitxategi exekutatzaile bat erabiltzea, MATLAB kodea duena.

### Aldagaiak

Aldagaiak funtzio operadorea erabiliz definitzen dira, MATLAB programazio-lengoaia ahul bat da, motak bere baitan konbertitzen direlako. Ondorioztatutako hizkuntza bat da, aldakorrak esleitu daitezkeelako beren mota adierazi gabe, objektu sinbolikotzat hartu behar badira izan ezik, eta horien mota alda daitekeelako. Balioak konstanteengandik, beste aldagai batzuen balioak barne hartzen dituen kalkulutik edo funtzio baten irteeratik etor daitezke. Adibidez:

```
>> x = 17
x =
 17

>> x = 'hat'
x =
hat

>> x = [3\*4, pi/2]
x =
 12.0000 1.5708

>> y = 3\*sin(x)
y =
 -1.6097 3.0000

```

  

### Matrizeak eta Bektoreak

Bektore sinple bat, kolon sintaxia erabiliz definitzen da: hasiera:gehikuntza:bukaera. Adibidez:

Matrize-lerro baten elementuak espazio edo koma hutsarekin bereiziz defini daiteke eta errenkada bakoitza amaitzeko puntu-koma(‘;’) bat erabiliz. Elementuen zerrenda kortxetez inguratua egon behar da. Parentesiak (elementu eta azpigenero) sartzeko erabiltzen dira (funtzio-argumentu zerrenda izendatzeko ere erabiltzen dira).

  

  

  

>> array = 1 : 2 : 9

```
>> array = 1:2:9
array =
 1 3 5 7 9

```

  

>> 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 =
 16 3 2 13
 5 10 11 8
 9 6 7 12
 4 15 14 1

>> A(2,3)
ans =
 11

```

  

  

### Klaseak eta objektuetara zuzendutako programazioa

MATLABek objektuetara zuzendutako programazioa onartzen du, besteak beste, klaseak, herentzia, bidalketa birtuala, paketeak, balioaren araberako semantika eta erreferentziazko semantika. Hala ere, sintaxia eta dei-konbentzioak nabarmen desberdinak dira beste hizkuntzekiko. MATLABek balio-klaseak eta erreferentzia-klaseak ditu, klaseak *heldulekua* super-klase gisa duen ala ez (erreferentzia-klaseetarako) edo ez (balio-klaseetarako).

  

Metodo-deiaren portaera desberdina da balio eta erreferentzia klaseen artean. Adibidez, metodo baterako deia:

```
object.method();

```

  

Edozein *objektu* kidea alda dezake *objektuaren* erreferentzia klase baten instantzia bat baldin bada bakarrik, bestela balio class metodo instantzia berria itzuli behar objektuaren aldatzeko beharra badu.

  

Klase sinple baten adibidea behean ematen da:

```
classdef Hello
 methods
 function greet(obj)
 disp('Hello!')
 end
 end
end

```

  

`hello.m` izeneko fitxategi batean sartzen denean, hau komando hauekin exekutatu daiteke:

```
>> x = Hello();
>> x.greet();
Hello!

```

### Grafikoak eta Erabiltzaile-interfaze grafikoaren programazioa

Grafiko hau ezin da une honetan ikusi, software arazo bat dela eta. Lanean ari gara ahalik eta lasterren grafikoak berriro erakutsi ahal izateko.

  

MATLABek ondo integratuta ditu grafikoak egiteko ezaugarriak. Adibidez, funtzio- *diagrama* *erabil daiteke x* eta *y* bi bektoreren grafiko bat sortzeko. Kodea:

```
x = 0:pi/100:2\*pi;
y = sin(x);
plot(x,y)

```

  

Sinu funtzioaren irudi hau sortzen du:

  

MATLABek hiru dimentsioko grafikoak ere onartzen ditu:

|  |  |  |
| --- | --- | --- |
| 
```
[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})')

```
 |
| Kode honek bi dimentsioko sinc funtzioaren **alanbrezko** 3D grafikoa sortzen du: |  | Kode honek **gainazaleko** 3D grafikoa sortzen du bi dimentsioko sinc funtzioaren normalizatu gabeko funtzioaren: |

  

MATLABek erabiltzailearen interfaze grafikoa (GUI) aplikazioak garatzen laguntzen du. Interfazeak programatikoki edo diseinu bisualeko inguruneak erabiliz sor daitezke, hala nola *GUIDE* eta *App Designer* .

Kanpo estekak
-------------

|  |  |
| --- | --- |
| Autoritate kontrola | 
* **Wikimedia proiektuak**
* Wd Datuak: Q169478
* Commonscat Multimedia: MATLAB

---

* **Identifikadoreak**
* WorldCat
* VIAF: 178697808
* BNF: 12488192g (data)
* LCCN: n92036881
* NKC: ph117047
* SUDOC: 03409038X
* BIBSYS: 90605893
* **Hiztegiak eta entziklopediak**
* Britannica: url

 |

* Wd Datuak: Q169478
* Commonscat Multimedia: MATLAB