MATLAB CORSO BASE - 04 Analisi e visualizzazione con vettori by daedevils

View this thread on steempeak.com
· @daedevils · (edited)
$6.02
MATLAB CORSO BASE - 04 Analisi e visualizzazione con vettori
![Lesson 01 (3).png](https://steemitimages.com/DQmNuRn22Y7t5gE2GQdwi728a3JTMeRgJxJfsCYAA2cB3o8/Lesson%2001%20(3).png)
Ora che siamo a conoscenza del funzionamento base di **Matlab** e siamo in grado di gestire i dati e la programmazione di primo livello,  possiamo affrontare più nel dettaglio la gestione dei vettori e le operazioni su di essi.
I vettori e le matrici compongono il cuore di **Matlab** ed il software è interamente sviluppato sulla gestione e l'analisi di questi.

***Anche gli scalari sono matrici 1x1!!***

---

# Differenti Variabili Numeriche

* **MATRICI:** i valori sono memorizzati in **m** righe e **n** colonne (*m-by-n*). 
![MAT3-1.png](https://steemitimages.com/200x200/https://steemitimages.com/DQmYzT9NBNV3U2uqjMz9E3E4mNfPrQny3ttaKJYeH6wJbrU/MAT3-1.png)            *Per esempio -->* v =[ 1 2 3; 4 5 6; 7 8 9; 10 11 12]  
              
* **VETTORI RIGA**:  i valori sono memorizzati in **1** riga e **n** colonne (*1-by-n*). ![MAT3-2.png](https://steemitimages.com/200x200/https://steemitimages.com/DQmXWNBG2hSoTNPbUzzrYRxA1CdGZ6RfDNEKPjbCy2kj6gT/MAT3-2.png) *Per esempio -->* v =[1 2 3] o v =[1:3]
* **VETTORI COLONNA**:  i valori sono memorizzati in **m** righe e **1** colonna (*m-by-1*). ![MAT3-3.png](https://steemitimages.com/200x200/https://steemitimages.com/DQmVnvR9DbGqjXwDnQpo51m3Wo9hwPPjc4ibNjqmeB3ybsE/MAT3-3.png) *Per esempio -->* v =[1; 2; 3] 
* **SCALARE**: un singolo valore è memorizzato in una cella 1x1 (*1-by-1*).  ![MAT3-4.png](https://steemitimages.com/200x200/https://steemitimages.com/DQmReF5ZNxR1G23t4DRgPbkzvX76VURx7AcGsjZJ8yiCTXb/MAT3-4.png) *Per esempio -->* v =1 o v =[1]

Come possiamo notare dagli esempi nella dichiarazione dei vettori o delle matrici il punto e virgola funge da divisore delle righe e lo spazio delle colonne.

---

<div class="pull-right">
<p><br></p>
<div class="text-justify">

# Espansione scalare

![MAT3-5.png](https://steemitimages.com/DQmckCBLBo3ZgiQTfokrm5vA5YdnAe3oegCuCrtTjTikEgs/MAT3-5.png)

|Operatore| Simbolo|
|--|--|
| Addizione | + |
| Sottrazione | - |
| Moltiplicazione | * |
| Divisione | / |
| Esponente | ^ |

In questo caso invece stiamo aggiungendo/togliendo/moltiplicando/dividendo un elemento scalare ad un vettore. Ogni elemento di quest'ultimo sarà modificato, a seconda dell'operatore utilizzato, dallo scalare stesso.
</div>
</div>
<div class="pull-left">
<p><br></p>

<div class="text-justify">

# Operazioni Aritmetiche

![MAT3-6.png](https://steemitimages.com/DQmU8Yv7c2TdTVZDB9UkANnadNfi223GMEVFKCrQXTXMnpd/MAT3-6.png)

|Operatore| Simbolo|
|--|--|
| Addizione | + |
| Sottrazione | - |
| Moltiplicazione Puntuale| .* |
| Divisione Puntuale | ./ |
| Esponente Puntuale | .^ |

In questo modo, per esempio, stiamo andando a moltiplicare il primo elemento del primo vettore con il primo elemento del secondo vettore, il secondo con il secondo e così via.
Per questo motivo i due vettori devono assolutamente avere le stesse dimensioni, altrimenti andremo incontro ad un messaggio di errore.

</div>
</div>

---

# Operazioni e Funzioni sui vettori

Analogamente alle operazioni aritmetiche, alcune funzioni sono *"vettorializzate"*.
Questo permette di utilizzare un singolo comando per modificare allo stesso modo tutti gli elementi di un vettore.
Questo strumento, seppur banale, ha delle potenzialità enormi e facilita di molto l'utilizzo vettoriale/matriciale delle variabili.

<div class="pull-right">
<p><br></p>
<div class="text-justify">

|Funzione | Simbolo |
|--|--|
| Seno | sin |
| Coseno | cos |
| Logaritmo | log |
| Arrotondamento | round |
| Modulo | mod |
| Radice quadrata | sqrt |

</div>
</div>
<div class="pull-left">
<p><br></p>

<div class="text-justify">

![MAT3-7.png](https://steemitimages.com/DQmVXN8VZQhyMjVqDxHAtALEBpan7uMo8mqF5ZXhHUkXBti/MAT3-7.png)

</div>
</div>

---

# Calcolo Statistico con i vettori

All'interno di **Matlab** è inoltre possibile interrogare i vettori per riuscire a carpire alcuni dati rilevanti senza dover analizzare ogni singolo elemento.
Ad esempio, alcune funzioni come **max** e **min**, sono in grado di estrarre il valore **massimo** o **minimo** all'interno di un vettore.

Dobbiamo porre molta attenzione nel caso in cui anche solo uno dei vettori di dati soggetti al calcolo presentasse un valore **NaN** (*"Not a Number"*) dovuto a un qualche errore o ad un dato mancante.
Questo comporterebbe l'assunzione del valore **NaN** anche come uscita delle funzioni utilizzate facendoci perdere dati.
Per ovviare a questo problema basterà inserire alla funzione ***'omitNaN'*** come secondo input:

     >> ValoreMedio = mean(VettoreInput, 'omitNaN')



Alcune funzioni utili e il loro funzionamento:

<div class="pull-right">
<p><br></p>
<div class="text-justify">

|Funzione | Risultato |
|--|--|
| max | Ritorna il valore massimo |
| min | Ritorna il valore minimo  |
| mean | Ritorna la media degli elementi |
| median | Ritorna la mediana degli elementi |

</div>
</div>
<div class="pull-left">
<p><br></p>

<div class="text-justify">

![MAT3-8.png](https://steemitimages.com/DQmQrDhuvbEtRR3SaWoTAGpaHDHbhrqnLsYmcjtSpeD6vEf/MAT3-8.png)
*Possiamo notare come le funzioni **max** e **min** possono essere usate, come da immagine, per ottenere l'indice di posizionamento del valore. Risulta molto comodo quando l'indice del valore cercato di **v** è correlato al valore presente sullo stesso indice di un altro vettore (per esempio con i vettori **MarketCap** e **Date** dell'esercitazione precedente).*

</div>
</div>

---

# Indicizzazione nei vettori

***Ma una volta scoperto che il valore massimo di capitalizzazione di mercato di Bitcoin ha un indice 8, come possiamo trovare il giorno in cui il prezzo era massimo? 
Come si può utilizzare l'indice di posizione scoperto per estrarre il giorno corrispondente dal vettore Date?***

![MAT3-9.png](https://steemitimages.com/DQmP7xPX2HjjkALp4WPm3iyrVWnyUTQq6CoW4NUQviNZgSE/MAT3-9.png)

Ogni elemento di ogni vettore ha un indice e in **Matlab** l'indice del primo elemento è **1**.
Possiamo quindi avere accesso ad un dato di un vettore specificandone l'indice tra parentesi dopo il nome della variabile:

     >> MaxMarketCap = MarketCap (8)

Questo comando assegna il valore massimo di capitalizzazione in miliardi di dollari, allocato in indice 8, alla variabile *MaxMarketCap* e visualizza nella **Command Window**.

Invece di utilizzare un numero si potrebbe utilizzare una **variabile come indice**.
In questo modo potremmo far dipendere questa variabile da altri parametri all'interno del codice, creare delle dipendenze e correlazioni o selezionare solo **sotto-sequenze** inserendo *indici vettoriali* che andranno ad estrarre solo parte dei valori del vettore intero.

Si può utilizzare la parola chiave ***end*** come indice per puntare all'ultimo elemento di un vettore indipendentemente dalla sua lunghezza.

Assegnando invece un valore ad un indice non esistente, il software in automatico aggiungerà tanti zeri pari a quelli che mancano per arrivare all'indice di inserimento. Più facile a farsi che a dirsi:

     >> x = [1 2 3];
        x(6)=33
        x =
             1   2    3   0    0    33

---

# Alcuni operatori 'comodi'

+ **TRASPORRE UN VETTORE**: grazie all'operatore **'** siamo in grado di [trasporre](https://it.wikipedia.org/wiki/Matrice_trasposta) i vettori. Può essere utilizzato per trasporre anche vettori con [numeri complessi](https://it.wikipedia.org/wiki/Numero_complesso) trasformandoli (') o meno (.') in complessi coniugati.

      >> v = [1 2 3];
      >> q = v'
      q = 
          1
          2
          3

+ **OPERATORE COLONNA**: grazie all'operatore **:** siamo in grado di decidere quali saranno i **valori iniziali, i valori finali e la spaziatura tra ogni elemento di un vettore**. Se viene omesso *dx* il software prende di default il valore 1 di spaziatura.

      >> x = v1:dx:v2

![MAT3_10.png](https://steemitimages.com/DQmYxX5cQWJ8Uo8vRKNNEP3Z3AcSYcawfAGjBESqo69b5bR/MAT3_10.png)

+ **OPERATORE LINSPACE**: grazie a questo operatore siamo in grado di decidere quali saranno i **valori iniziali, i valori finali e il numero di elementi che intercorreranno tra i due**. Se vengono omessi gli elementi di ingresso per l'operatore, esso crea di default un vettore di 100 elementi.

      >> x = linspace(v1,v2,n)

![MAT3_11.png](https://steemitimages.com/DQmb62mNTrVieaEAPZh15G9isiqZ14gRmmvZgz5RR1CRZfT/MAT3_11.png)

Possiamo notare inoltre come tutti questi siano definiti come vettori riga. Quanto appreso ci permette di trasporre questi vettori nel caso in cui volessimo renderli vettori colonna.

---

# Analisi tipologie di grafici vettoriali

<div class="pull-right">
<p><br></p>
<div class="text-justify">

![MAT3_13.png](https://steemitimages.com/DQmXwFj5WXUZfLPDtY3hi6dqnXTBJL3AinYuMZu6CFLUBzu/MAT3_13.png)
<center>*area(Date,SBD-Steem)*</center>
![MAT3_15.png](https://steemitimages.com/DQmeCZWTLMH1zp9WicpqhV6nM966CBnkb4oR7Q5ER8BgTZa/MAT3_15.png)

<center>*scatter(SBD,Steem)*</center>

</div>
</div>
<div class="pull-left">
<p><br></p>

<div class="text-justify">

![MAT3_12.png](https://steemitimages.com/DQmct9cQeiM7PRBEAtGUaFqgqhsKEfgjyVP8AgmLAepQjmA/MAT3_12.png)
<center>*plot(Date,SBD-Steem,'r')*</center>

![MAT3_14.png](https://steemitimages.com/DQmY1NthWjHszZEzEPFR9WNCAn4rsxKV5YXizXML2T5mC2L/MAT3_14.png)
<center> *y=[SBD Steem]; >> bar(Date,y)* </center>
</div>
</div>


|Funzione	|Descrizione|
|--|--|
|scatter| Grafico a bolle, con dimensioni e colore variabili dell'indicatore|
|bar| Grafico a barre (verticali e orizzontali)|
|stem| Grafici a sequenze discrete |
|stairs| Grafici a scale |
|area| Grafici rappresentativi di aree|
|pie| Grafici a torta|
|histogram|	Istogrammi |

Potete trovare altrettanti strumenti grafici seguendo [l'help in linea](https://it.mathworks.com/help/). 
**Matlab** permette di personalizzare ad ogni modo la nostra visualizzazione grafica ma ricordiamoci che i vettori devono avere le stesse dimensioni!

---

# Conclusioni

Abbiamo finalmente concluso la quarta lezione; nella successiva affronteremo il discorso matrici più nel dettaglio.
Volevo ringraziare @bjtcoin per aver dato un suo parere nella scorsa lezione. Spesso il confronto e anche la critica, se costruttiva, possono portare ad enormi miglioramenti! 

Al fine di rendere quanto più didattico possibile il corso, ho deciso di fornirvi una parte della mia memoria cloud di **Drive** dove potete trovare delle cartelle con il materiale per poter eseguire autonomamente l'esercitazione proposta.
Basterà scaricare la cartella *"Lesson 04"* e selezionarla nella **Current Folder**.
[Qui](https://drive.google.com/drive/folders/1sBNOVKP0hEGVZSz9x2OVQxDXfGeokUXs?usp=sharing) il link di condivisione della cartella **Drive**. In questa lezione saranno disponibili solamente le immagini e il file *".mat"* dei dati.

---

## Bibliografia e fonti

* Corso di **Fondamenti di Matlab** al Politecnico di Milano
* Corso online **Matlab Fundamentals** fornito da [MathWorks](https://it.mathworks.com/?s_tid=gn_logo)
* L'esercitazione è creata interamente dal **Team Daedevils**
 
Fonti immagini:
* [CCO licence ](https://commons.wikimedia.org/wiki/File:Matlab_Logo.png)
* Le restanti immagini sono create dal **Team Daedevils** e sono di sua proprietà

---

## Indice

1. [Lezione 01 - Introduzione](https://steemit.com/ita/@daedevils/matlab-basic-course-01-introduction)
2. [Lezione 02 - Importazione e tracciamento dati](https://steemit.com/ita/@daedevils/matlab-corso-base-02-importazione-e-tracciamento-dati)
3. [Lezione 03 - Incrementare l'automazione utilizzando gli script](https://steemit.com/ita/@daedevils/matlab-corso-base-03-incrementare-l-automazione-utilizzando-gli-script)

---

<center>[![votaXdavinci.witness.jpg](https://steemitimages.com/DQmUs8VCYpQY9r1UtWtzRmBZcgfw8YCZhZZ6gyeqHAomMV5/Prova4.jpg)](https://v2.steemconnect.com/sign/account-witness-vote?witness=davinci.witness&approve=1)<sub>Immagine CC0 Creative Commons, si ringrazia <a href="https://steemit.com/@mrazura">@mrazura</a> per il logo **ITASTEM**.
**CLICK <a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=davinci.witness&approve=1">HERE</a> AND VOTE FOR "DAVINCI.WITNESS"**</sub></center>

---

<center>![2.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1521014385/drzn6arnpswr9hf3wbqm.png)</center>
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 321 others
properties (23)
post_id39,952,376
authordaedevils
permlinkmatlab-corso-base-04-analisi-e-visualizzazione-con-vettori
categoryita
json_metadata"{"format": "markdown", "links": ["https://it.wikipedia.org/wiki/Matrice_trasposta", "https://it.wikipedia.org/wiki/Numero_complesso", "https://it.mathworks.com/help/", "https://drive.google.com/drive/folders/1sBNOVKP0hEGVZSz9x2OVQxDXfGeokUXs?usp=sharing", "https://it.mathworks.com/?s_tid=gn_logo", "https://commons.wikimedia.org/wiki/File:Matlab_Logo.png", "https://steemit.com/ita/@daedevils/matlab-basic-course-01-introduction", "https://steemit.com/ita/@daedevils/matlab-corso-base-02-importazione-e-tracciamento-dati", "https://steemit.com/ita/@daedevils/matlab-corso-base-03-incrementare-l-automazione-utilizzando-gli-script", "https://v2.steemconnect.com/sign/account-witness-vote?witness=davinci.witness&approve=1", "https://steemit.com/@mrazura"], "app": "steemit/0.1", "tags": ["ita", "ita-technology", "itastem", "steemstem", "matlab"], "users": ["bjtcoin"], "image": ["https://steemitimages.com/DQmNuRn22Y7t5gE2GQdwi728a3JTMeRgJxJfsCYAA2cB3o8/Lesson%2001%20(3).png"]}"
created2018-03-22 12:39:27
last_update2018-03-23 10:52:54
depth0
children1
net_rshares2,054,928,914,966
last_payout2018-03-29 12:39:27
cashout_time1969-12-31 23:59:59
total_payout_value4.741 SBD
curator_payout_value1.281 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length12,305
author_reputation741,310,241,300
root_title"MATLAB CORSO BASE - 04 Analisi e visualizzazione con vettori"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (385)
@steemstem-bot ·
<center><a href="www.steemit.com/@steemstem"><img src="https://steemitimages.com/DQme9SYMiRpzAVf7EcStsToi6B8fiEBsifidgD7h2cS18Y5/steemSTEM-ita.png"></a><br><table><tr><th> </th><th> </th><th><a href="https://steemit.com/steemstem/@steemstem/helpful-guidelines-for-crafting-steemstem-content">Guidelines</a></th><th><a href="https://steemit.com/steemstem/@steemstem/steemstem-winter-2017-2018-project-update">Project Update</a></th><th> </th><th> </th></tr></table><br><a href="https://steemit.com/steemstem/@steemstem/being-a-member-of-the-steemstem-community"><b>Being A SteemStem Member</b></a></center>
properties (22)
post_id40,014,087
authorsteemstem-bot
permlinkre-matlab-corso-base-04-analisi-e-visualizzazione-con-vettori-20180322t194515
categoryita
json_metadata{}
created2018-03-22 19:45:15
last_update2018-03-22 19:45:15
depth1
children0
net_rshares0
last_payout2018-03-29 19:45:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length605
author_reputation3,811,633,288,089
root_title"MATLAB CORSO BASE - 04 Analisi e visualizzazione con vettori"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000