半夜吃东西有什么危害| golden是什么牌子| 5月23日是什么日子| 泰州有什么好玩的地方| 藏红花有什么作用和功效| gmv是什么意思| 水生木是什么意思| cpp是什么| 4.20是什么星座| longines是什么牌子| 大肠杆菌吃什么药| 宝宝发烧是什么原因引起的| 什么安神助睡眠| 为什么会缺钾| 一热就咳嗽是什么原因| 甚嚣尘上什么意思| 回复1是什么意思| 兔子能吃什么| 忠于自己是什么意思| 百什么争什么| 跑单是什么意思啊| 8月15号什么星座| 二元酸是什么| 间是什么结构| 什么水果补铁| 舌头尖有小红点这是什么症状| 乙肝两对半15阳性是什么意思| 嗯呢是什么意思| 梦见家里发大水了是什么征兆| 什么是生物制剂| 覆水难收什么意思| 天克地冲是什么意思| 七九年属什么的| 孕中期头疼是什么原因| 鼻炎和鼻窦炎有什么区别| 吃西兰花有什么好处| 女性大腿酸痛什么原因| 资讯是什么意思| 老婆饼为什么叫老婆饼| 石榴石一般什么价位| 77代表什么意思| 什么牛奶最有营养| 出品是什么意思| crc是什么职业| 九知道指的是什么| 女生下面长什么样| 桑叶有什么作用| 文替是什么意思| 3月3是什么星座| 滇红属于什么茶| 大便培养是检查什么的| 印代表什么| 生理盐水敷脸有什么效果| 三个手念什么| 肝五行属什么| 眼睛发蓝是什么原因| 省检察长是什么级别| 朋友的反义词是什么| 下肢动脉硬化吃什么药| hbcab偏高是什么意思| adh是什么激素| 膝盖积液用什么药最好| 快递属于什么行业| 什么是坐骨神经疼有什么症状| 脚底板疼痛是什么原因| 炖羊骨头放什么调料| 案山是什么意思| mlb是什么牌子| 胡萝卜不能和什么一起吃| 尿骚味重是什么原因| 口腔溃疡能吃什么| 什么是食品添加剂| 荀彧字什么| 四妙丸有什么功效与作用| 昏厥是什么意思| 1893年属什么生肖| 梦见跳舞是什么意思| 山竹有什么功效| 胡萝卜什么时候成熟| 春捂秋冻指的是什么意思| 内秀是什么意思| 单纯性肥胖是什么意思| 男孩子断掌有什么说法| 吃什么食物能养肝护肝| 甲状腺在什么位置图片| lf是什么牌子| 结肠炎适合吃什么食物| 测骨龄挂什么科| 6424什么意思| 氢化植物油是什么| 肾绞痛可能由于什么原因引起| 公关是什么工作| 血浓度高是什么原因| 契丹族现在是什么族| 什么高什么长| 蝉什么时候出来| 香港商务签证需要什么条件| 40min是什么意思| 红烧排骨用什么排骨比较好| 嘴唇白是什么原因| 人生最重要的是什么| 唐氏综合症是什么原因| 猫有什么特点| 跻身是什么意思| 乔丹是什么品牌| 多发性硬化是什么病| 上睑下垂是什么原因造成的| 头疼呕吐是什么原因| 查激素六项挂什么科| cenxino手表是什么牌子| 孕吐吃什么药| 成什么上什么| 吃什么水果对子宫和卵巢好| 日晡是什么意思| 怕热的人是什么原因| 不劳而获是什么意思| 心影增大是什么意思| 五年是什么婚| 腰间盘突出有什么好的治疗方法| 神经官能症是什么症状| 壁虎怕什么| 龟头炎用什么| 国家为什么重视合肥| as是什么意思| 出什么什么什么| 迁坟有什么讲究和忌讳| 什么原因导致心肌缺血| 肠炎用什么药好| 狮子座和什么星座不合| 火龙果不能和什么一起吃| 三伏天喝什么汤最好| 多吃黄瓜有什么好处| 吃什么对牙齿有好处| 个人简历籍贯填什么| 土地兼并是什么意思| 总胆红素高是怎么回事有什么危害| am和pm是什么意思| 时间是什么| 淑字五行属什么| 女人平胸是什么原因| 不宁腿综合症吃什么药| 健康是什么意思| 7点到9点是什么时辰| 冲正什么意思| 为什么会多囊| 肠胃不好吃什么药最好| 经常出汗是什么原因| 十月十六号是什么星座| %是什么意思| 拉肚子能吃什么菜| 世界上牙齿最多的动物是什么| 动脉钙化是什么意思| 痉挛吃什么药| 嘴巴很臭是什么原因引起的| 乐高可以拼什么| 04属什么| 橘子是什么季节的水果| 水是什么意思| 2月15号是什么星座| 可爱的动物是什么生肖| 黄体囊肿是什么意思| 小儿安现在叫什么名| 斑鸠幼鸟吃什么| 头皮屑多是什么原因| 女性腰疼去医院挂什么科| 活死人是什么意思| nmol是什么单位| 直立倾斜试验阳性是什么病| 女频是什么| 长闭口是什么原因造成的| 体内湿气重用什么药| 劫色是什么意思| anti是什么意思| 薇字五行属什么| 蛋白尿是什么原因引起的| 不自主的摇头是什么病| 什么是高压氧| 肺实性结节是什么意思| 肚子一按就痛什么原因| 手脚脱皮吃什么维生素| 热火朝天是什么意思| 吸尘器什么牌子好| 高三学生吃什么补脑抗疲劳| 腱鞘炎看什么科| 黄豆加什么打豆浆好喝又营养| 一什么天| 出轨是什么意思| 土字生肖有钱收是什么生肖| 做颈动脉彩超挂什么科| 壬水命是什么意思| 毛尖属于什么茶| 女人胃寒吃什么好得快| 二字五行属什么| 主动脉硬化吃什么药好| 干眼症吃什么药好| 血糖低吃什么补的最快| ibm是什么| 前白蛋白偏低是什么意思| 什么治失眠最有效| wink是什么意思| 塑料袋属于什么垃圾| 什么叫化疗| 试孕纸什么时候测最准| 虫毛读什么| 胎位roa是什么意思| 马步鱼是什么鱼| cim是什么意思| 年抛是什么意思| 参加追悼会穿什么衣服| 什么人始终不敢洗澡| 酒吧营销是做什么的| cp1是什么意思| 神经病吃什么药效果好| 亚急性甲状腺炎吃什么药| 葛优躺是什么意思| 生殖器疱疹是什么病| 息肉和囊肿有什么区别| 屎为什么是黑色的| 哈伦裤配什么上衣| 愚孝什么意思| 怀孕早期有什么症状| 声字五行属什么| 肩周炎看什么科| 正局级是什么级别| 胃疼挂什么科| 吹空调流鼻涕吃什么药| 头发一半白一半黑是什么原因| 肚子老是胀是什么原因| 嗓子哑了吃什么药| 两岁宝宝不会说话但什么都知道| 杭字五行属什么| 1月3号是什么星座| 乳酸菌素片什么时候吃| penis是什么意思| 只羡鸳鸯不羡仙是什么意思| 肾结石都有什么症状| 辣椒炭疽病用什么药| 世界上最可怕的动物是什么| 梦见掉牙是什么意思| 茄子把有什么功效| 肛周脓肿用什么药| 糜烂性胃炎有什么症状| 梦见好多葡萄是什么意思| 薄熙来犯了什么罪| 方案是什么意思| 什么的水珠| 契丹族现在是什么族| 高血压和高血脂有什么区别| 为什么星星会眨眼| 糖尿病是什么症状| 611是什么意思| 肉身成圣是什么意思| 对蚊子过敏是什么症状| 心肌缺血吃什么食物| xpe是什么材料| 梦见家里死人了代表什么预兆| 脂溢性皮炎是什么症状| 曲安奈德针治疗什么| 丝光棉是什么材质| 牙龈疼是什么问题| 刘邦和刘秀是什么关系| 卵巢结节是什么意思| 腮腺炎输液用什么药| 菠萝和凤梨有什么区别| 百度Vai al contenuto

2017劳动节放假安排时间表 股市2017年五一放假时

Da Wikipedia, l'enciclopedia libera.
MATLAB
software
Logo
Logo
MATLAB R2011a in Windows 7.
MATLAB R2011a in Windows 7.
MATLAB R2011a in Windows 7.
GenereAnalisi numerica
SviluppatoreMathWorks
Data prima versione1984
Ultima versioneR2025a (14 Maggio 2025)
Sistema operativoMicrosoft Windows(lista)
macOS
Linux
LinguaggioFortran
Java
C++
C
C, CUDA, MATLAB[1]
LicenzaEULA
(licenza non libera)
LinguaInglese
Sito webwww.mathworks.com/products/matlab.html e de.mathworks.com/products/matlab.html
百度 本宪法以法律的形式确认了中国各族人民奋斗的成果,规定了国家的根本制度和根本任务,是国家的根本法,具有最高的法律效力。

MATLAB (abbreviazione di Matrix Laboratory) è un ambiente per il calcolo numerico e l'analisi statistica scritto in C, che comprende anche l'omonimo linguaggio di programmazione creato dalla MathWorks. MATLAB consente di manipolare matrici, visualizzare funzioni e dati, implementare algoritmi, creare interfacce utente, e interfacciarsi con altri programmi. 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 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, presidente del dipartimento di scienze informatiche dell'Università del Nuovo Messico. Creò MATLAB per dare ai propri studenti accesso a LINPACK e ad EISPACK senza che dovessero necessariamente conoscere Fortran. Presto il software si diffuse nelle altre università e trovò un grande pubblico tra la comunità dei matematici applicati. L'ingegnere Jack Little conobbe il programma durante una visita a Moler all'Università di Stanford nel 1983. Riconoscendo il suo potenziale commerciale si unì con Moler e Steve Bangert: assieme riscrissero MATLAB in linguaggio C e fondarono The MathWorks nel 1984 per continuarne lo sviluppo.

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.[2]

L'interfaccia principale di MATLAB è composta da diverse finestre che è possibile affiancare, spostare, ridurre a icona, ridimensionare e così via. Le finestre principali, più usate, sono quattro:

  • Command window
  • Workspace
  • Current directory
  • Command history

Prompt dei comandi (command window)

[modifica | modifica wikitesto]

La command window è una finestra dell'interfaccia principale di MATLAB, nella quale è possibile digitare comandi supportati e visualizzare a schermo in tempo reale i risultati. Ad esempio è possibile utilizzare MATLAB come una potente calcolatrice:

2+3
ans=5

La variabile ans è una variabile standard. In essa viene caricato l'ultimo risultato generato. Con il comando quit, si esce dal programma:

quit

è presente anche un help off-line sintetico richiamabile tramite il comando:

help <nome_comando>

Dove <nome_comando> indica l'istruzione sulla quale si necessita di aiuto. Esempio

help sqrt
help det

Le operazioni standard sono:

+ (somma)
- (sottrazione)
* (moltiplicazione)
/ (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.

Lo workspace è lo spazio di lavoro (o spazio di memoria) contenente le variabili dichiarate. Per visualizzare tutte le variabili utilizzate si utilizza il comando who, mentre con il comando whos si visualizzano tutte le variabili utilizzate, ma in forma estesa, cioè ci viene data la loro descrizione con nome, dimensione, memoria occupata, classe e attributi.

La finestra workspace elenca tutte le variabili allocate in workspace in questo momento, e dà la possibilità di allocare nuove variabili o di importare dall'esterno un elenco di variabili (ad esempio da un file di testo). è inoltre possibile stampare l'elenco delle variabili attuali od eliminarne una direttamente dalla finestra (senza scrivere nessun comando).

Per visualizzare nella command window il valore di una variabile memorizzata nello workspace è sufficiente scrivere il nome della variabile stessa.

Current directory

[modifica | modifica wikitesto]

La finestra current directory permette, come si può intuire, di esplorare il contenuto delle cartelle sul proprio supporto di memoria. Da questa finestra è possibile aprire direttamente file compatibili con MATLAB con un semplice doppio click. Inoltre è possibile esplorare cartelle utilizzando, nella command window, comandi tipici dei moderni sistemi operativi basati su tecnologia UNIX (come Linux e macOS) come "cd nomecartella", "cd. .", "cd /indirizzocartella", e così via.

Command history

[modifica | modifica wikitesto]

Nella finestra Command History sono elencati tutti i comandi digitati di recente, divisi per ora e data. è possibile rilanciare direttamente dalla command history un comando digitato nella command window in precedenza semplicemente con un doppio click.

Programmare in MATLAB

[modifica | modifica wikitesto]

Variabili predefinite

[modifica | modifica wikitesto]

In MATLAB ci sono delle 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
  • -inf: è un numero minore di realmin, -∞, meno infinito
  • version: il numero della versione di MATLAB utilizzata
  • computer: una sigla che indica il tipo di computer utilizzato. Esempio: PCWIN
  • ans: ultimo risultato dell'ultima operazione eseguita
  • NaN: "Not a number" , indica il risultato di una forma matematica indeterminata o non definita (es. ∞/∞ oppure 0/0)

Dichiarazione variabili

[modifica | modifica wikitesto]

Contrariamente a numerosi altri linguaggi, che, all'atto della dichiarazione di una variabile, necessitano di un'indicazione esplicita del "tipo" di cui essa deve essere, per dichiarare una variabile in MATLAB è sufficiente scrivere il nome della variabile seguito dall'operatore "=" e dal valore numerico o alfabetico che si vuole assegnare alla variabile. Nel caso in cui si tratti di testo è necessario inserirlo tra gli apici:

var1=1
var2='abc'

Se non si vuole visualizzare il valore della variabile appena dopo averla dichiarata (come normalmente avviene) si deve terminare l'assegnamento con un punto e virgola:

var3=1234;
var4='abcdef';

Quando si assegna una variabile numerica, sia essa una costante, un vettore, o una matrice, MATLAB la interpreta sempre e comunque come una matrice; ad esempio una costante è una matrice 1x1, un vettore è una matrice 1xl, cioè una riga di l elementi.

è importante notare che MATLAB è case sensitive, per esempio:

v=1
V=1

risultano due variabili distinte.

Per definire un numero complesso, esso va dichiarato scrivendolo in forma algebrica:

c=4+9*i

Per resettare, cancellare, il contenuto di una variabile si utilizza il comando

clear (nome_variabile)

per le variabili predefinite questo comando ripristina il valore di default, altrimenti se sono altre variabili esse vengono eliminate dalla workspace. Omettendo il nome dalla variabile,

clear

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)

[modifica | modifica wikitesto]

Definizione vettori

[modifica | modifica wikitesto]

I vettori possono essere di due tipi:

  • Vettori riga
  • Vettori colonna

Il vettore riga è una matrice del tipo (1xn), dove n . Esempio:

vr=[2 8 10 7]

Il vettore colonna invece è una matrice del tipo (mx1), dove m . Esempio:

vc=[3; 1; 6; 8]

Spesso è utile definire i vettori con intervalli, ad esempio un vettore che contiene i primi dieci numeri interi. In generale:

v=[inizio:incremento:fine]|[inizio:fine]

Esempi:

v1=[1:10]
v2=[-1:0.2:1]

che generano:

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]

Se non si scrive l'incremento, per default esso viene posto uguale a 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:

vet=10:1:-10
  vet =
 Empty matrix: 1-by-0

Indicizzazione di vettori

[modifica | modifica wikitesto]

Per selezionare un elemento del vettore, sia riga che colonna, si utilizza la seguente istruzione:

v(posizione_indice)
v(k), dove k  , seleziona l'elemento in posizione k-esima

Importante: a differenza di quanto avviene in molti altri linguaggi, gli indici di vettori e matrici si contano a partire da 1. Esempio di indicizzazione:

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

Definizione matrici

[modifica | modifica wikitesto]

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 e le righe con un punto e 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 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 ];

Nel creare una matrice si possono anche utilizzare variabili dichiarate in precedenza

M4=[var1 var2;var3 var4]

ed è inoltre possibile definire le matrici per parti, ad esempio in una matrice M 3 x 3, i comandi

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

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 è l'uso dell'operatore di sequenza:

Sintassi: M= inizio:incremento:fine | inizio:fine

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
    7     9    11    13

Indicizzazione di matrici

[modifica | modifica wikitesto]

Per selezionare un elemento di una matrice, utilizziamo la seguente istruzione:

M(indice_riga, indice_colonna)
M(l,k) dove l,k   selezionano l'elemento che si trova in riga l-esima e colonna k-esima

è possibile estrarre anche intere colonne o righe. Supponiamo di avere una matrice M con m x n elementi, in generale:

M(l,:) , estrae l'intera riga l-esima in un vettore riga con m elementi
M(:,k) , estrae l'intera colonna k-esima in un vettore colonna con n elementi
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

[modifica | modifica wikitesto]

Si elenca ora una serie di operazioni molto utili per lavorare con le matrici in ambiente MATLAB.

Sia A una generica matrice m x n, con il comando

size(A)

si ottiene un vettore composto dal numero di righe e dal numero di colonne della matrice A (questo è estendibile anche a matrici con più di due dimensioni).

Con l'operatore ' (apostrofo), si ottiene la matrice trasposta di A:

A'

questo comando è utile per trasformare un vettore riga in un vettore colonna e viceversa.

Con il comando

sum(A)

si ottiene un vettore riga composto dalla somma di ogni colonna di A.

Con il comando

det(A)

si ottiene il determinante della matrice A.

Con il comando

poly(A)

si ottiene un vettore contenente i coefficienti del polinomio caratteristico di A.

Se A è una matrice quadrata, con il comando:

eig(A)

si ottiene un vettore colonna composto dagli autovalori di A.

Con il comando:

diag(A)

si ottiene un vettore colonna composto da tutti gli elementi della diagonale principale di A. Se A fosse un vettore, si otterrebbe invece una matrice diagonale con gli elementi di tale vettore.

Con il comando

trace(A)

si ottiene la traccia di A, cioè la somma degli elementi della diagonale principale.

Con il comando

fliplr(A)

si ottiene una nuova matrice, ma con l'ordine delle colonne invertito.

Con il comando

inv(A)

si ottiene la matrice inversa di A.

Realizzazione di grafici 2D

[modifica | modifica wikitesto]

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 con uguale numero di elementi, è possibile tracciare il grafico di y in funzione di x con il comando

 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).

è 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:

plot(A)

Per disegnare grafici multipli nello stesso quadro è possibile seguire la seguente sintassi:

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

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:

title('testo')

è possibile assegnare un titolo al grafico, mentre con i comandi

xlabel('testo')
ylabel('testo')

è possibile invece assegnare un nome ai valori dell'asse delle ascisse e delle ordinate.

Il comando

grid

aggiunge una griglia al grafico corrente.

è possibile in modo molto semplice disegnare diversi grafici nella stessa finestra. Per fare ciò si usa il comando

subplot(m,n,p)

Con tale comando si disegnano in una finestra m x n grafici. Il comando subplot va inserito subito prima del comando plot, e la variabile p rappresenta il numero del grafico da disegnare, contando lungo le righe da sinistra a destra. Ad esempio se si sta lavorando su una finestra con 3 righe e 4 colonne di grafici e si vuole disegnare il secondo grafico della seconda riga, si scrive:

subplot(3,4,6)

Con il comando

axis([xi xf yi yf])

è possibile impostare la porzione di grafico da visualizzare, indicando con xi l'ascissa iniziale, xf l'ascissa finale, yi l'ordinata iniziale e yf l'ordinata finale. Si fa notare che vanno inseriti fra parentesi quadre perché la funzione axis richiede un vettore in ingresso, quindi è ovviamente possibile dichiarare all'esterno tale vettore e fornirlo come argomento:

axis(V)

Analisi e simulazione di sistemi dinamici con MATLAB

[modifica | modifica wikitesto]

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, ordinati dal grado maggiore a quello minore. Ad esempio per indicare il polinomio s^3 - 4s^2 + 0.23s - 1.9 si deve inserire il vettore riga:

[1 -4 +.23 -1.9]

Con il comando

lsim(sys,u,t,x0)

si ottiene l'andamento del sistema sys forzato dall'ingresso u durante il tempo t con stato iniziale x0. u deve essere, in pratica, un segnale campionato in tutti gli istanti contenuti nel vettore t. è evidente quindi che u e t devono avere la stessa dimensione, cioè lo stesso numero di elementi.

Un semplice esempio di simulazione

[modifica | modifica wikitesto]

si vuole calcolare la risposta ad un gradino unitario del seguente sistema:


con condizioni iniziali nulle.

In realtà esiste un comando specifico per calcolare la risposta al gradino, come mostreremo in seguito, ma ci serviamo di questo semplice caso per mostrare l'utilizzo di lsim. Cominciamo subito definendo il sistema con il comando ss:

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

ci verrà restituito il seguente testo:

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
Continuous-time model.

e nella workspace vedremo apparire il nostro oggetto sys. Supponiamo di voler calcolare l'andamento del sistema da quando parte, con condizioni iniziali nulle, fino a che non si esaurisce completamente il transitorio. Per questo semplice sistema si ricava facilmente che ciò avviene a circa 5-6 secondi. Quindi possiamo passare a definire il tempo di esecuzione:

t=0:.01:7;

a questo punto possiamo definire il nostro segnale d'ingresso (il gradino), in questo modo:

u=1
for i=.01:.01:7 u=[u 1]; end

in parole semplici, si è impostato un ciclo for di durata pari alla dimensione di t, aggiungendo ad ogni ciclo un 1 in coda ad u, ottenendo così un vettore u composto da tutti 1 delle stesse dimensioni di t. Abbiamo ora tutti gli elementi per far partire la simulazione:

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:

step(sys,tfinal);

Esempio di linguaggio MATLAB

[modifica | modifica wikitesto]

Questo codice, preso dalla function magic.m, crea un quadrato magico M per valori dispari di 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;

ad esempio, per n=3 si ottiene:

M =

    8     1     6
    3     5     7
    4     9     2

Sono disponibili diverse alternative a MATLAB, tra cui:

Ce ne sono anche di disponibili come open source o software libero:

Sono relativamente compatibili con il linguaggio MATLAB. Tra queste, GNU Octave è unico perché vuole essere un drop-in compatibile con MATLAB a livello di sintassi.

Tra gli altri linguaggi che trattano gli array come tipi di dato basilari sono presenti:

  • APL
  • Fortran (dal 90 in poi)
  • S-Lang, insieme ai linguaggi statistici R ed S

Esistono anche alcune librerie che aggiungono funzionalità simili ai linguaggi esistenti, come:

  1. ^ (EN) Mike Croucher, What langauge is MATLAB written in?, su walkingrandomly.com, 9 giugno 2012. URL consultato il 1o dicembre 2012.
  2. ^ (EN) US military ban locks two Chinese universities out of popular software, su South China Morning Post, 12 giugno 2020. URL consultato il 15 marzo 2021.

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàVIAF (EN178697808 · LCCN (ENn92036881 · BNF (FRcb12488192g (data) · J9U (ENHE987007289707705171
66岁属什么生肖 平安果什么时候吃 什么是风湿 胃肠感冒吃什么食物比较好 人参长什么样子图片
梦见白猫是什么预兆 做什么生意挣钱 女人打呼噜是什么原因 梦见猪肉是什么意思 眉毛变白是什么原因
全麻后需要注意什么 偷鸡不成蚀把米是什么意思 曹字五行属什么 movies是什么意思 男人喝红糖水有什么好处
97年属什么生肖 高血糖吃什么药 欧米茄算什么档次 vane是什么意思 荔枝什么时候成熟
闭关什么意思dajiketang.com 喝醉酒是什么感觉hcv8jop3ns6r.cn 最聪明的狗是什么狗qingzhougame.com 花中西施指的是什么花hcv8jop3ns8r.cn o型阴性血是什么意思hcv7jop7ns0r.cn
shark是什么意思hcv9jop5ns3r.cn 运费险是什么意思aiwuzhiyu.com 萎缩性胃炎是什么原因引起的hebeidezhi.com 一什么雪花hcv8jop1ns3r.cn 深是什么生肖hcv9jop1ns1r.cn
双向情感障碍症是什么病hcv9jop8ns0r.cn 什么是向量hcv9jop7ns5r.cn 查血糖血脂挂什么科hcv8jop0ns9r.cn 类风湿吃什么食物好hcv8jop7ns4r.cn 吃避孕药对身体有什么影响hcv9jop0ns0r.cn
绯色是什么颜色hcv8jop1ns1r.cn 类风湿什么症状hcv8jop4ns5r.cn 角色扮演是什么意思hkuteam.com 肚子疼吃什么aiwuzhiyu.com 排骨炖什么汤止咳润肺travellingsim.com
百度