MATLAB: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile |
||
(27 versioni intermedie di 21 utenti non mostrate) | |||
Riga 1:
{{Software
|Nome = MATLAB
|Screenshot = MATLAB2011.PNG
|Didascalia = MATLAB R2011a in [[Windows 7]].
|Sviluppatore = [[MathWorks]]
|UltimaVersione =
|DataUltimaVersione =
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
Line 22 ⟶ 21:
|Lingua = Inglese
|SoftwareLibero = no
|
|Genre2 = cas
}}
'''MATLAB''' (abbreviazione di '''Mat'''rix '''Lab'''oratory) è un ambiente per il [[calcolo numerico]]
Nonostante sia specializzato nel calcolo numerico, uno strumentario opzionale interfaccia MATLAB con il motore di calcolo simbolico di [[Maple]]. MATLAB è usato da milioni di persone nell'industria e nelle università per via dei suoi numerosi strumenti a supporto dei più disparati campi di studio applicati e funziona su diversi [[sistema operativo|sistemi operativi]], tra cui [[Windows]], [[Mac OS]], [[GNU/Linux]] e [[Unix]].
==
Abbreviazione di "MATrix LABoratory", MATLAB fu creato alla fine degli anni settanta da [[Cleve Moler]],
Nel 2020, a seguito delle sanzioni degli [[Stati Uniti d'America]] nei confronti della [[Cina]], MATLAB è stato ritirato da due università cinesi, che hanno risposto promuovendo alternative ''[[open source]]'' e sviluppandone altre in casa.<ref>{{Cita web|url=https://www.scmp.com/news/china/diplomacy/article/3088854/us-military-ban-locks-two-chinese-universities-out-popular|titolo=US military ban locks two Chinese universities out of popular software|sito=South China Morning Post|data=2020-06-12|lingua=en|accesso=2021-03-15}}</ref>
== Interfaccia ==
L'interfaccia principale di MATLAB è composta da diverse [[
* ''Command
* ''Workspace''
* ''Current directory''
* ''Command history''
=== Prompt dei comandi (
La ''
2+3
ans=5
Line 49 ⟶ 50:
È presente anche un help off-line sintetico richiamabile tramite il comando:
help <nome_comando>
Dove
Esempio
help sqrt
Line 59 ⟶ 60:
/ (divisione)
^ (elevamento a potenza)
Se si scrivono più comandi su una stessa linea, è necessario separarli con una virgola ‘,' . Se un comando è terminato con un punto e virgola (;), i risultati ottenuti non verranno visualizzati immediatamente in Command Window, ma verranno solo salvati in workspace (cfr paragrafo successivo).
Con la freccia in su, tasto ↑, si visualizzano i comandi eseguiti precedentemente ed è possibile eseguirli di nuovo. Si possono utilizzare le parentesi () per modificare la priorità tra le varie operazioni.
=== ''Workspace'' ===
La finestra
Per visualizzare
=== ''Current
La finestra ''
=== ''Command
Nella finestra ''Command History'' sono elencati tutti i comandi digitati di recente, divisi per ora e data. È possibile rilanciare direttamente
== Programmare in MATLAB ==
Line 82 ⟶ 83:
* ''pi'': approssimazione di [[pi greco]], π
* ''eps'': precisione di macchina del computer che si sta utilizzando
* ''realmax'': è il massimo [[numero reale]] positivo rappresentabile
* ''realmin'': è il minimo numero reale positivo rappresentabile
* ''inf'': è un numero maggiore di realmax, ∞, infinito
Line 115 ⟶ 116:
'''N.B.''': di default le variabili numeriche dichiarate sono tutte di tipo double (floating point in doppia precisione).
=== Vettori (con calcolo vettoriale delle grandezze fisiche e matematica delle matrici) ===
==== Definizione vettori ====
I vettori possono essere di due tipi:
Line 135 ⟶ 137:
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]
Bisogna stare attenti a non assegnare all'incremento e alla destinazione numeri relativi discordi, fatto che produrrà il seguente risultato in fase di esecuzione:
Line 156 ⟶ 158:
=== Matrici ===
==== Definizione matrici ====
Per creare una matrice si procede in modo simile alle variabili per quanto riguarda l'assegnamento, racchiudendo la matrice tra parentesi quadre, separando gli elementi di una stessa riga con una virgola
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]
In una matrice si possono anche racchiudere variabili dichiarate in precedenza▼
In alternativa a virgole e punti e virgole si possono usare, rispettivamente, spazi e a-capo. In questo modo la rappresentazione di una matrice assomiglia a quella tradizionale dell'algebra:
M4=[ 1 2 3
4 5 6
7 8 9 ];
M4=[var1 var2;var3 var4]
ed è inoltre possibile definire le matrici per parti, ad esempio in una matrice M 3 x 3, i comandi
Line 168 ⟶ 175:
consentono di assegnare alla prima riga i valori, precedentemente definiti, a1, b1 e c1, alla seconda a2, b2 e c2 e così via.
Un altro modo per una dichiarazione veloce di matrici è
Sintassi: M=
anche in questo caso, se si omette l'incremento, per default è 1. Esempio:
M=[1:2:7;4:2:10;7:2:13]
M= 1 3 5 7
4 6 8 10
Line 180 ⟶ 187:
Per selezionare un elemento di una matrice, utilizziamo la seguente istruzione:
M(indice_riga, indice_colonna)
M(l,k) dove l,k <math>\in</math> <math>\mathbb{N}</math>
È possibile estrarre anche intere colonne o righe. Supponiamo di avere una matrice M
M(l,:) , estrae l'intera riga l-esima in un vettore riga
M(:,k) , estrae l'intera colonna k-esima in un vettore colonna
M(:) , estrae l'intera matrice
Per eliminare la colonna di una matrice M:
M(:,k)=[] ,elimina la colonna k-esima, la matrice M diventa nx(m-1)
Line 191 ⟶ 198:
Si elenca ora una serie di operazioni molto utili per lavorare con le matrici in ambiente MATLAB.
Sia A una generica matrice
size(A)
si ottiene un vettore composto dal numero di righe e dal numero di colonne della matrice A (
Con l'operatore ' (apostrofo), si ottiene la matrice '''trasposta''' di A:
Line 232 ⟶ 239:
=== Realizzazione di grafici 2D ===
Uno strumento molto potente che l'ambiente MATLAB offre per rappresentare dati numerici è la possibilità di realizzare il [[grafico di una funzione]]. In particolare, dati due vettori x e y
plot(x,y)
Si fa notare che il comando plot non solo disegna y in funzione di x ma crea automaticamente anche un'interpolazione lineare dei valori assunti dalla funzione (dato che ovviamente nessuna funzione memorizzata in un calcolatore è continua).
Line 238 ⟶ 245:
È possibile includere opzioni aggiuntive come il colore o il tipo di linea seguendo la seguente sintassi:
plot(x,y,'marcatore stile colore')
dove il marcatore sta ad indicare in che modo i punti dei due vettori saranno rappresentati (ad esempio: +, *, o, x), lo stile è lo stile della linea (è possibile scegliere tra linea continua, tratteggiata, tratto punto ed altri ancora: -, - -, :, -.) che unirà i punti e il colore è quello del grafico, contrassegnato con l'iniziale in inglese del colore scelto (ad esempio per avere un grafico verde si dovrà digitare ''g,'' iniziale di ''green''). È da notare che se si assegna un marcatore al comando plot, questo non effettuerà più l'interpolazione lineare automatica tra i punti della funzione, ma si limiterà a rappresentare i singoli punti.
Allo stesso modo, con il comando plot, è possibile disegnare una matrice quadrata:
Line 246 ⟶ 253:
dove y1=f(x1), y2=f(x2), e così via, rappresentano le funzioni da rappresentare, oppure utilizzare il comando
hold on
che fa sì che, se c'è un grafico attivo, questo non venga chiuso e il successivo plot si sovrapponga ad esso.
Con il comando:
Line 259 ⟶ 266:
aggiunge una griglia al grafico corrente.
È possibile
subplot(m,n,p)
Con tale comando si disegnano in una finestra
subplot(3,4,6)
Con il comando
axis([xi xf yi yf])
è possibile impostare
axis(V)
Line 272 ⟶ 279:
MATLAB è un potentissimo strumento per l'analisi numerica di sistemi dinamici, anche con molti ingressi e uscite. MATLAB permette di dichiarare facilmente degli oggetti sistema, grazie ad alcuni comandi che si possono utilizzare installando un apposito componente aggiuntivo, il ''Control System Toolbox''. Dato un sistema dinamico è possibile quindi dichiararlo come sistema in forma esplicita (comando '''ss''', cioè state-space)
sys=ss(A,B,C,D,t0)
dove A, B, C, D sono le matrici dei coefficienti, mentre t0 è il periodo di campionamento se si considera un sistema a tempo discreto, mentre se t0 viene omesso si dichiara un sistema a tempo continuo.
Il sistema può essere dichiarato anche in forma zeri-poli-guadagno (comando '''zpk''', zero-pole-gain)
sys=zpk([z1 z2 ··· zm],[p1 p2 ··· pn],K)
È da notare che K non è il guadagno statico del sistema, ma è semplicemente la costante fuori dalla [[funzione di trasferimento]] quando è nella forma K*Π(s-z_i)/Π(s-p_i).
Per definire una funzione di trasferimento si impiega il comando '''tf:'''
sys=tf(NUM,DEN)
dove num e den sono vettori riga contenenti i coefficienti dei polinomi al numeratore e al denominatore della funzione di trasferimento desiderata,
[1 -4 +.23 -1.9]
Line 323 ⟶ 330:
lsim(sys,u,t,[0 0]')
lo stesso risultato si poteva ottenere con il comando ''step,'' che traccia direttamente il grafico della risposta al segnale di ingresso a scalino:
step(sys)
il tempo in questo caso è calcolato automaticamente, ma può anche essere specificato:
Line 342 ⟶ 349:
3 5 7
4 9 2
== Alternative ==
Sono disponibili diverse alternative a MATLAB, tra cui:
* [[Maple]]
* [[Interactive Data Language]]
* [[Mathematica]]
Ce ne sono anche di disponibili come ''[[open source]]'' o [[software libero]]:
* [[GNU Octave]]
* [[Scilab]]
* [[FreeMat]]
* [[Julia (linguaggio di programmazione)|Julia]]
* [[Sage (software)|Sage]]
Sono relativamente compatibili con il linguaggio MATLAB. Tra queste, GNU Octave è unico perché vuole essere un ''drop-in'' [[GNU Octave#Compatibilità con il linguaggio MATLAB|compatibile con MATLAB]] a livello di sintassi.
Tra gli altri linguaggi che trattano gli ''[[array]]'' come [[Tipo di dato|tipi di dato]] basilari sono presenti:
* [[APL]]
* [[Fortran]] (dal 90 in poi)
* S-Lang, insieme ai linguaggi statistici [[R (software)|R]] ed S
Esistono anche alcune librerie che aggiungono funzionalità simili ai linguaggi esistenti, come:
* ILNumerics per [[.NET Framework|.NET]]
* IT++ per [[C++]]
* Numeric.js per [[JavaScript]]
* SciLua e Torch per [[Lua]]
* Perl Data Language per [[Perl]]
* [[NumPy]], [[SciPy]] e [[Matplotlib]] per Python
* SciRuby per [[Ruby (linguaggio di programmazione)|Ruby]]
== Note ==
Line 360 ⟶ 401:
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC}}
{{Controllo di autorità}}
{{Portale|informatica|matematica}}
[[Categoria:Software per la matematica]]
[[Categoria:Software applicativo individuale]]
[[Categoria:Linguaggi di programmazione]]
|