MATLAB

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
MATLAB
software
Siglă
MATLAB R2011a pe Windows 7.
MATLAB R2011a pe Windows 7 .
Tip Analiza numerica
Dezvoltator MathWorks
Data primei versiuni 1984
Ultima versiune R2020b (17 septembrie 2020 ; acum 11 luni )
Sistem de operare Microsoft Windows ( listă )
macOS
Linux
Limba Fortran
Java
C ++
C.
C , CUDA , MATLAB [1]
Licență EULA
( licența nu este gratuită )
Limbă Engleză
Site-ul web www.mathworks.com/products/matlab.html

MATLAB (prescurtarea pentru Mat rix Lab oratory) este un mediu pentru calcul numeric și analiză statistică scris în C , care include și limbajul de programare cu același nume creat de MathWorks . MATLAB vă permite să manipulați matrici , să vizualizați funcții și date, să implementați algoritmi , să creați interfețe utilizator și să interfațați cu alte programe. Deși este specializat în calcul numeric, un set de instrumente opțional interfață MATLAB cu motorul de calcul simbolic al lui Maple . MATLAB este utilizat de milioane de oameni din industrie și universități datorită numeroaselor sale instrumente pentru a sprijini cele mai diverse domenii de studiu aplicate și rulează pe o varietate de sisteme de operare , inclusiv Windows , Mac OS , GNU / Linux și Unix .

fundal

Scurt pentru „MATrix LABoratory”, MATLAB a fost creat la sfârșitul anilor 1970 de Cleve Moler , președintele departamentului de informatică al Universității din New Mexico . El a creat MATLAB pentru a le oferi elevilor săi acces la LINPACK și EISPACK fără să cunoască neapărat Fortran . Software-ul s-a răspândit în curând în alte universități și a găsit un public numeros în rândul comunității de matematicieni aplicați. Inginerul Jack Little a făcut cunoștință cu programul în timpul unei vizite la Moler la Universitatea Stanford în 1983 . Recunoscând potențialul său comercial, el a făcut echipă cu Moler și Steve Bangert: împreună au rescris MATLAB în limbajul C și au fondat The MathWorks în 1984 pentru a continua dezvoltarea.

În 2020, ca urmare a sancțiunilor Statelor Unite împotriva Chinei , MATLAB a fost retrasă de la două universități chineze, care au răspuns promovând surse deschise alternative și dezvoltând altele acasă. [2]

Interfață

Interfața principală MATLAB constă din mai multe ferestre pe care le puteți țiglă, muta sau reduce la pictogramă , redimensiona și așa mai departe. Ferestrele principale, cele mai utilizate, sunt patru:

  • Fereastra de comandă
  • Spațiu de lucru
  • Directorul curent
  • Istoricul comenzilor

Prompt de comandă ( fereastră de comandă )

Fereastra de comandă este o fereastră a interfeței principale MATLAB, în care puteți tasta comenzi acceptate și puteți vizualiza rezultatele pe ecran în timp real. De exemplu, puteți utiliza MATLAB ca un calculator puternic:

 2 + 3
ans = 5

Variabila ans este o variabilă standard. Ultimul rezultat generat este încărcat în el. Cu comanda quit , ieșiți din program:

 părăsi

Există, de asemenea, un ajutor sintetic off-line care poate fi apelat folosind comanda:

 ajutor <numele_comandă>

În cazul în care, evident, <nume_comandă> indică instrucțiunea pentru care este nevoie de ajutor. Exemplu

 ajuta sqrt
ajuta det

Operațiunile standard sunt:

 + (sumă)
- (scădere)
* (multiplicare)
/ (Divizia)
^ (exponențiere)

Dacă scrieți mai multe comenzi pe aceeași linie, trebuie să le separați cu o virgulă ','. Dacă o comandă este terminată cu un punct și virgulă (;), rezultatele obținute nu vor fi afișate imediat în fereastra de comandă, ci vor fi salvate numai în spațiul de lucru (vezi paragraful următor). Cu săgeata sus, tasta ↑, sunt afișate comenzile executate anterior și este posibil să le executați din nou. Puteți utiliza paranteze () pentru a schimba prioritatea între operații.

Spațiu de lucru

Spațiul de lucru este spațiul de lucru (sau spațiul de memorie) care conține variabilele declarate. Pentru a vizualiza toate variabilele utilizate, utilizați comanda who , în timp ce comanda whos afișează toate variabilele utilizate, dar în formă extinsă, adică ni se oferă descrierea lor cu numele, dimensiunea, memoria ocupată, clasa și atributele.

Fereastra spațiului de lucru listează toate variabilele alocate în spațiul de lucru în acest moment și oferă posibilitatea de a aloca variabile noi sau de a importa o listă de variabile din exterior (de exemplu dintr-un fișier text). De asemenea, este posibil să imprimați lista variabilelor curente sau să ștergeți una direct din fereastră (fără a scrie nicio comandă).

Pentru a afișa valoarea unei variabile stocate în spațiul de lucru în fereastra de comandă, pur și simplu scrieți numele variabilei în sine.

Directorul curent

Fereastra de director curentă permite, după cum puteți ghici, să explorați conținutul folderelor de pe suportul de memorie . Din această fereastră puteți deschide direct fișiere compatibile MATLAB cu un simplu dublu clic. De asemenea, este posibil să explorați folderele folosind, în fereastra de comandă , comenzi tipice sistemelor de operare moderne bazate pe tehnologia UNIX (cum ar fi Linux și macOS ), cum ar fi "cd folder name", "cd ..", "Cd / folder folder address" , si asa mai departe.

Istoricul comenzilor

Fereastra Istoric comenzi listează toate comenzile tastate recent, împărțite la ora și data. Este posibil să relansați o comandă tastată anterior în fereastra de comandă direct din istoricul comenzilor pur și simplu cu un dublu clic.

Programare în MATLAB

Variabile

Variabile predefinite

În MATLAB există variabile a căror valoare este predefinită (dar poate fi totuși modificată de utilizator). Sunt:

  • i , j : unitate imaginară într-un număr complex
  • pi : aproximarea lui pi , π
  • eps : precizia computerului pe care îl utilizați
  • realmax : este numărul real pozitiv maxim care poate fi reprezentat
  • realmin : este cel mai mic număr real pozitiv care poate fi reprezentat
  • inf : este un număr mai mare decât realmax, ∞, infinit
  • -inf : este un număr mai mic decât realmin, -∞, minus infinit
  • versiune : numărul versiunii MATLAB utilizate
  • computer : o abreviere care indică tipul de computer utilizat. Exemplu: PCWIN
  • ans : ultimul rezultat al ultimei operații efectuate
  • NaN : „Nu este un număr”, indică rezultatul unei forme matematice nedeterminate sau nedefinite (de exemplu, ∞ / ∞ sau 0/0)

Declarație variabilă

Contrar multor alte limbi, care, atunci când declară o variabilă, necesită o indicație explicită a „tipului” de care trebuie să fie, pentru a declara o variabilă în MATLAB este suficient să scrieți numele variabilei urmat de operator "= "și valoarea numerică sau alfabetică pe care doriți să o atribuiți variabilei. În cazul în care este text, este necesar să îl introduceți între ghilimele:

 var1 = 1
var2 = 'abc'

Dacă nu doriți să afișați valoarea variabilei imediat după ce ați declarat-o (așa cum se întâmplă în mod normal), trebuie să încheiați atribuirea cu un punct și virgulă:

 var3 = 1234;
var4 = 'abcdef';

Atunci când este atribuită o variabilă numerică, fie ea o constantă, un vector sau o matrice, MATLAB o interpretează întotdeauna ca o matrice; de exemplu, o constantă este o matrice 1x1, un vector este o matrice 1xl, adică un rând de l elemente.

Este important să rețineți că MATLAB este sensibil la majuscule și minuscule , de exemplu:

 v = 1
V = 1

există două variabile distincte.

Pentru a defini un număr complex, acesta trebuie declarat prin scrierea acestuia sub formă algebrică:

 c = 4 + 9 * i

Pentru a reseta, șterge, conținutul unei variabile utilizați comanda

 clar (nume_variabil)

pentru variabilele predefinite, această comandă restabilește valoarea implicită, altfel, dacă există alte variabile, acestea sunt șterse din spațiul de lucru. Prin omiterea numelui din variabilă,

 clar

întregul spațiu de lucru este curățat.

NB : în mod implicit, variabilele numerice declarate sunt toate duble (virgulă mobilă cu precizie dublă).

Vectori (cu calculul vectorial al mărimilor fizice și matematica matricilor)

Definiția vectors

Vectorii pot fi de două tipuri:

  • Vectorii de rând
  • Vectorii coloanei

Vectorul rând este o matrice de tip (1xn), unde n . Exemplu:

 vr = [2 8 10 7]

Vectorul coloană, pe de altă parte, este o matrice de tipul (mx1), unde m . Exemplu:

 vc = [3; 1; 6; 8]

Este adesea util să se definească vectori cu intervale, cum ar fi un vector care conține primele zece numere întregi. În general:

 v = [start: increment: end] | [start: end]

Exemple:

 v1 = [1:10]
v2 = [- 1: 0,2: 1]

care generează:

 v1 = [1 2 3 4 5 6 7 8 9 10]
v2 = [- 1 -0,8 -0,6 -0,4 -0,2 0 0,2 0,4 0,6 0,8 1]

Dacă incrementul nu este scris, implicit este setat egal cu 1.

Aveți grijă să nu atribuiți numere relative conflictuale creșterii și destinației, care va produce următorul rezultat în timpul rulării:

 veterinar = 10: 1: -10
veterinar =
Matrice goală: 1 la 0

Indexarea vectorială

Pentru a selecta un element al vectorului, atât rând, cât și coloană, se folosește următoarea declarație:

 v (index_position)
v (k), unde k       , selectează elementul în poziția k-a

Important: spre deosebire de ceea ce se întâmplă în multe alte limbi, indicii vectorilor și matricilor sunt numărați începând de la 1. Exemplu de indexare:

 v = [7 3 0 5 2 6]
k = 1
v (k) = 7

Matrici

Definiția matrices

Pentru a crea o matrice, procedați într-un mod similar cu variabilele în ceea ce privește atribuirea, încadrând matricea între paranteze pătrate, separând elementele aceluiași rând cu o virgulă sau cu un spațiu și rândurile cu punct și virgulă.

 M1 = [1 2 3 4; 5 6 7 8; 9 10 11 12]
M2 = [13,14,15; 16,17,18]
M3 = [„a”, 19, „b”; 20, „c”, 21]

De asemenea, puteți include variabile declarate anterior într-o matrice

 M4 = [var1 var2; var3 var4]

și puteți defini, de asemenea, tablouri pentru piese, de exemplu într-o matrice M 3 x 3, comenzi

 M (1,1: 3) = [a1 b1 c1];
M (2,1: 3) = [a2 b2 c2];
M (3,1: 3) = [a3 b3 c3];

acestea vă permit să atribuiți valorile definite anterior a1, b1 și c1 primului rând, a2, b2 și c2 celui de-al doilea și așa mai departe.

O altă modalitate de declarare rapidă a matricelor este următoarea:

 Sintaxă: M = [start: increment: end] | [start | end]

de asemenea, în acest caz, dacă incrementul este omis, în mod implicit este 1. Exemplu:

 M = [1: 2: 7; 4: 2: 10; 7: 2: 13]
M = 1 3 5 7
    4 6 8 10
    7 9 11 13

Indexarea matricilor

Pentru a selecta un element al unui tablou, folosim următoarea declarație:

 M (index_linie, index_coloană)
M (l, k) unde l, k       selectați elementul găsit în rândul I și coloana K

De asemenea, puteți extrage coloane sau rânduri întregi. Să presupunem că avem o matrice M cu elemente mxn, în general:

 M (l, :), extrage întregul rând l într-un vector rând cu m elemente
M (:, k), extrage întreaga coloană a k-a într-un vector de coloană cu n elemente
M (:), extrage întreaga matrice

Pentru a șterge coloana unei matrice M:

 M (:, k) = [], ștergeți a k-a coloană, matricea M devine nx (m-1)

Operații cu matrice

Iată o listă de operații foarte utile pentru lucrul cu matrici în mediul MATLAB.

Fie A o matrice generică mxn, cu comanda

 dimensiune (A)

obținem un vector compus din numărul de rânduri și numărul de coloane ale matricei A (evident că acesta poate fi extins și la matrice cu mai mult de 2 dimensiuni).

Cu operatorul '(apostrof), obținem matricea transpusă a lui A:

 LA'

această comandă este utilă pentru transformarea unui vector rând într-un vector coloană și invers.

Cu comanda

 suma (A)

obținem un vector rând compus din suma fiecărei coloane a lui A.

Cu comanda

 det (A)

obținem determinantul matricei A.

Cu comanda

 poli (A)

obținem un vector care conține coeficienții polinomului caracteristic al lui A.

Dacă A este o matrice pătrată, cu comanda:

 eig (A)

obținem un vector coloană compus din valorile proprii ale lui A.

Cu comanda:

 diag (A)

obținem un vector coloană compus din toate elementele diagonalei principale a lui A. Dacă A ar fi un vector, am obține în schimb o matrice diagonală cu elementele acelui vector.

Cu comanda

 urmă (A)

obținem urma lui A, adică suma elementelor diagonalei principale.

Cu comanda

 fliplr (A)

veți obține o nouă matrice, dar cu ordinea coloanei inversată .

Cu comanda

 inv (A)

obținem matricea inversă a lui A.

Crearea graficii 2D

Un instrument foarte puternic pe care mediul MATLAB îl oferă pentru a reprezenta date numerice este posibilitatea graficării unei funcții. În special, având în vedere doi vectori x și y cu număr egal de elemente, este posibil să se traseze graficul lui y în funcție de x cu comanda

 complot (x, y)

Trebuie remarcat faptul că comanda grafică nu numai că desenează y ca o funcție a lui x, dar creează și automat o interpolare liniară a valorilor asumate de funcție (deoarece evident că nici o funcție stocată într-un computer nu este continuă).

Puteți include opțiuni suplimentare, cum ar fi culoarea sau tipul de linie, urmând următoarea sintaxă:

 complot (x, y, „marker stil de culoare”)

unde marcatorul indică modul în care vor fi reprezentate punctele celor doi vectori (de exemplu: +, *, o, x), stilul este stilul liniei (este posibil să alegeți între linie continuă, linie întreruptă, punct de liniuță și alții din nou: -, - -,:, -.) care vor uni punctele și culoarea este cea a graficului, marcată cu inițiala în limba engleză a culorii alese (de exemplu pentru a avea un grafic verde va trebui să tip g, inițială de verde ). Rețineți că, dacă atribuiți un marker comenzii de plotare, aceasta nu va mai efectua interpolare liniară automată între punctele funcției, ci va reprezenta doar punctele individuale.

În mod similar, cu comanda plot, puteți desena o matrice pătrată:

 complot (A)

Pentru a desena mai multe grafice în același panou este posibil să urmați următoarea sintaxă:

 grafic (x1, y1, 'msc', x2, y2, 'msc', ...)

unde y1 = f (x1), y2 = f (x2) și așa mai departe, reprezintă funcțiile de reprezentat sau utilizați comanda

 stai asa

ceea ce înseamnă că, dacă există un grafic activ, acesta nu este închis și următorul grafic îl suprapune.

Cu comanda:

 titlu („text”)

puteți atribui un titlu diagramei, în timp ce utilizați comenzile

 xlabel („text”)
ylabel („text”)

pe de altă parte, este posibil să atribuiți un nume valorilor axelor abscisei și ale ordonatelor.

Comanda

 grilă

adaugă o grilă la graficul curent.

Este foarte ușor să desenați mai multe grafice în aceeași fereastră. Pentru a face acest lucru folosim comanda

 subtrama (m, n, p)

Cu această comandă puteți desena grafică într-o fereastră mxn. Comanda subplot trebuie inserată imediat înainte de comanda plot, iar variabila p reprezintă numărul graficului de trasat, numărându-se de-a lungul liniilor de la stânga la dreapta. De exemplu, dacă lucrați la o fereastră cu 3 rânduri și 4 coloane de grafice și doriți să desenați al doilea grafic al celui de-al doilea rând, scrieți:

 subtrama (3,4,6)

Cu comanda

 ax ([xi xf yi yf])

este posibil să setați porțiunea graficului care trebuie afișată, indicând cu xi abscisa inițială, xf abscisa finală, yi ordonata inițială și yf ordonata finală. Rețineți că acestea trebuie inserate între paranteze pătrate deoarece funcția axă necesită un vector de intrare, deci este evident posibil să declarați acest vector în exterior și să îl furnizați ca argument:

 axă (V)

Analiza și simularea sistemelor dinamice cu MATLAB

MATLAB este un instrument foarte puternic pentru analiza numerică a sistemelor dinamice, chiar și cu multe intrări și ieșiri. MATLAB vă permite să declarați cu ușurință obiecte de sistem, datorită unor comenzi care pot fi utilizate prin instalarea unui add-on special, Control System Toolbox . Având în vedere un sistem dinamic, este deci posibil să îl declarați ca un sistem în formă explicită (comanda ss , adică spațiu de stare)

 sys = ss (A, B, C, D, t0)

unde A, B, C, D sunt matricile coeficienților, în timp ce t0 este perioada de eșantionare dacă avem în vedere un sistem de timp discret, în timp ce dacă t0 este omis declarăm un sistem de timp continuu.

Sistemul poate fi declarat și sub formă de câștig zero-pol (comandă zpk , câștig zero-pol)

 sys = zpk ([z1 z2 ··· zm], [p1 p2 ··· pn], K)

Rețineți că K nu este câștigul static al sistemului, ci este pur și simplu constanta în afara funcției de transfer atunci când are forma K * Π (s-z_i) / Π (s-p_i).

Pentru a defini o funcție de transfer folosim comanda tf:

 sys = tf (NUM, DEN)

unde num și den sunt vectori de rând care conțin coeficienții polinoamelor la numărătorul și numitorul funcției de transfer dorite, ordonate de la gradul major la cel minor. De exemplu, pentru a indica polinomul s ^ 3 - 4s ^ 2 + 0.23s - 1.9 trebuie introdus vectorul rând:

 [1 -4 +.23 -1.9]

Cu comanda

 lsim (sys, u, t, x0)

obținem tendința sistemului sys forțat de intrarea u în timpul t cu starea inițială x0 . u trebuie să fie, în practică, un semnal eșantionat la toate momentele conținute în vectorul t . Prin urmare, este evident că u și t trebuie să aibă aceeași dimensiune, adică același număr de elemente.

Un exemplu simplu de simulare

vrem să calculăm răspunsul la o etapă de unitate a următorului sistem:

                              

cu condiții inițiale zero.

Există de fapt o comandă specifică pentru a calcula răspunsul la pas, așa cum vom arăta mai târziu, dar folosim acest caz simplu pentru a arăta utilizarea lsim . Să începem prin definirea sistemului cu comanda ss :

 sys = ss ([- 1 pi; -pi -1], [0; 1], [pi 1], 0)

următorul text ne va fi returnat:

 a = 
          x1 x2
  x1 -1 3,142
  x2 -3.142 -1
b = 
      u1
  x1 0
  x2 1
c = 
         x1 x2
  y1 3.142 1
d = 
      u1
  y1 0
Model în timp continuu.

iar în spațiul de lucru vom vedea cum apare obiectul nostru sys . Să presupunem că vrem să calculăm tendința sistemului de la pornire, cu condiții inițiale zero, până când tranzitorul este complet epuizat. Pentru acest sistem simplu este ușor de dedus că acest lucru se întâmplă în aproximativ 5-6 secunde. Deci, putem trece mai departe pentru a defini timpul de execuție:

 t = 0: .01: 7;

în acest moment ne putem defini semnalul de intrare (pasul), astfel:

 u = 1
pentru i = .01: .01: 7 u = [u 1]; Sfârșit

în termeni simpli, am stabilit o buclă for cu o durată egală cu mărimea lui t , adăugând la fiecare buclă un 1 la sfârșitul lui u , obținând astfel un vector u compus din toți 1s de aceeași dimensiune ca t . Acum avem toate elementele pentru a începe simularea:

 lsim (sys, u, t, [0 0] ')

același rezultat ar putea fi obținut cu comanda pas, care trasează direct graficul răspunsului la semnalul de intrare pas:

 pas (sys)

timpul în acest caz este calculat automat, dar poate fi specificat și:

 pas (sys, tfinal);

Exemplu de limbaj MATLAB

Acest cod, preluat din funcția magic.m , creează un pătrat magic M pentru valori impare de 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;

de exemplu, pentru n = 3 obținem:

M =

 8 1 6
    3 5 7
    4 9 2

Alternative

Există mai multe alternative la MATLAB, inclusiv:

Există, de asemenea, unele disponibile ca software open source sau gratuit :

Sunt relativ compatibile cu limbajul MATLAB. Dintre acestea, GNU Octave este unic deoarece vrea să fie un drop-in compatibil cu MATLAB la nivel de sintaxă.

Alte limbi care tratează matricele ca tipuri de date de bază includ:

  • APL
  • Fortran (de la 90 încoace)
  • S-Lang, împreună cu limbajele statistice R și S

Există, de asemenea, unele biblioteci care adaugă funcționalități similare limbilor existente, cum ar fi:

Notă

  1. ^ (EN) Mike Croucher, Ce limbă este scrisă în MATLAB? , pe walkingrandomly.com , 9 iunie 2012. Adus 1 decembrie 2012 .
  2. ^ (EN) Interdicția militară americană blochează două universități chineze din programele populare din South China Morning Post, 12 iunie 2020. Accesat la 15 martie 2021.

Elemente conexe

Alte proiecte

linkuri externe