MATLAB: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
errori punteggiatura |
Nessun oggetto della modifica Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile |
||
(34 versioni intermedie di 27 utenti non mostrate) | |||
Riga 1:
{{Software
|Nome = MATLAB
|Screenshot = MATLAB2011.PNG
|Didascalia = MATLAB R2011a in [[Windows 7]].
|Sviluppatore = [[MathWorks]]
|UltimaVersione =
|DataUltimaVersione =
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
Line 12 ⟶ 11:
|SistemaOperativo2 = Mac OS X
|SistemaOperativo3 = Linux
|NotaSistemaOperativo = ([
|Linguaggio = C++
|Linguaggio2 = Java
Line 22 ⟶ 21:
|Lingua = Inglese
|SoftwareLibero = no
|
|Genre2 = cas
}}
'''MATLAB''' (abbreviazione di '''Mat'''rix '''Lab'''oratory) è un ambiente per il [[calcolo numerico]] e l'analisi [[statistica]] scritto in [[linguaggio C|C]], che comprende anche l'omonimo [[linguaggio di programmazione]] creato dalla
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
=== ''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 ==
=== Variabili ===
==== Variabili predefinite ====
In MATLAB ci sono delle [[variabile (informatica)|variabili]] il cui valore è predefinito (ma può comunque essere modificato dall'utente). Esse sono:
* ''i'', ''j'': [[unità immaginaria]] in un [[numero complesso]]
* ''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 95 ⟶ 96:
var1=1
var2='abc'
Se non si vuole visualizzare il valore della variabile appena dopo averla dichiarata (come normalmente
var3=1234;
var4='abcdef';
Line 113 ⟶ 114:
viene effettuata la pulizia di tutta la workspace.
'''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 126 ⟶ 128:
Esempio:
vc=[3; 1; 6; 8]
Spesso è utile definire i vettori con intervalli
In generale:
v=[inizio:incremento:fine]|[inizio:fine]
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 148 ⟶ 150:
v(posizione_indice)
v(k), dove k <math>\in</math> <math>\mathbb{N}</math>, seleziona l'elemento in posizione k-esima
Importante: a differenza di quanto avviene in molti altri linguaggi, gli indici
Esempio di indicizzazione:
v=[7 3 0 5 2 6]
Line 156 ⟶ 158:
=== Matrici ===
==== Definizione matrici ====
Per creare una matrice si procede in modo simile alle variabili
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)
==== Operazioni con le matrici ====
Si elenca ora una serie di operazioni molto utili per lavorare con le matrici in ambiente
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 221 ⟶ 228:
Con il comando
trace(A)
si ottiene la '''traccia''' di A, cioè la somma degli elementi della diagonale principale.
Con il comando
Line 232 ⟶ 239:
=== Realizzazione di grafici 2D ===
Uno strumento molto potente che l'ambiente MATLAB offre per rappresentare dati numerici è la
plot(x,y)
È 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
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)
== Analisi e simulazione di sistemi dinamici con MATLAB ==
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
sys=ss(A,B,C,D,t0)
dove A, B, C, D
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).
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]
Con il comando
lsim(sys,u,t,x0)
si ottiene l'andamento del sistema ''sys'' forzato dall'ingresso ''u''
=== Un semplice esempio di simulazione ===
Line 325 ⟶ 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 344 ⟶ 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 358 ⟶ 397:
== Altri progetti ==
{{interprogetto
== Collegamenti esterni ==
* {{
* {{FOLDOC}}
{{Controllo di autorità}}
{{Portale|informatica|matematica}}
[[Categoria:Software per la matematica]]
[[Categoria:Software applicativo individuale]]
[[Categoria:Linguaggi di programmazione]]
|