Successivamente all’introduzione a Matlab e all’importazione e tracciamento dei dati, in questa lezione andremo ad analizzare l’automatizzazione dei comandi tramite l’utilizzo di script.
Utilizzo degli script
Abbiamo utilizzato diversi comandi per creare grafici annotati, per fornire nomi agli assi o alle figure e per utilizzare colori o stili differenti.
Ma perché ripetere questi processi ogni volta che si desidera modificare in parte o tracciare nuovi dati?
Prendendo in analisi l’esercitazione precedente, se volessimo analizzare una diversa criptomoneta o semplicemente un differente arco temporale, dovremmo immettere nuovamente i comandi uno alla volta anche se il procedimento sarebbe esattamente lo stesso.
Per rendere tutto più pratico è possibile creare uno script per automatizzare le attività; non solo per ripetere lo stesso esperimento ma anche per implementare modifiche a script preesistenti permettendoci di risparmiare tempo prezioso e di sfruttare il lavoro già sviluppato.
Come creare un nuovo script?
Selezionando la voce New Script dalla barra degli strumenti sotto la finestra Home. Questo aprirà una finestra di editor intitolata Untitled.m.
Cliccando con il tasto destro all’interno della Current Folder, selezionando la voce New File e successivamente Script. Con questo metodo andiamo a creare uno script (che possiamo immediatamente rinominare) all’interno della cartella di lavoro senza che si apra alcuna finestra di editor. Un semplice doppio click andrà ad aprire il nostro editor.
Nella Command Window tramite la funzione edit ‘nomefile’ è possibile creare un nuovo script che verrà aperto nell’editor con il nome assegnatogli.
Come scrivere uno script?
Come in ogni ambiente di programmazione è buona norma far buon uso dell’indentazione e dei commenti in modo da rendere leggibile il nostro script sia a noi in futuro che ad altre persone che si ritroveranno ad utilizzarlo.
Alcuni tipi di funzione, come ad esempio if o while, prevedono l’indentazione automatica che ci semplifica molto la stesura dello script.
Anche i commenti sono un aspetto importante della programmazione soprattutto in caso di file di grandi dimensioni.
Il simbolo ”%%” ci permette di creare delle aree di codice specifiche come ad esempio caricamento dati, calcoli, tracciamento grafici ecc ecc.
Inserendo il titolo dell’area di interesse dopo il simbolo e uno spazio, il software creerà automaticamente un testo in grassetto verde.
L’area di interesse, cioè quella dove è presente il cursore, andrà ad evidenziarsi di giallino chiaro.
Uno degli aspetti interessanti di queste sottosezioni è la possibilità di eseguire un’area alla volta andando a cliccare Run Section; questa alternativa potrà sembrarvi inutile ma, quando avrete un file molto lungo e complesso, vi aiuterà moltissimo nella verifica correttiva delle varie sottosezioni.
Introducendo semplici commenti alle funzioni utilizzate, ai passaggi numerici o a qualsiasi altro genere di comando renderemo molto più leggibile il nostro script.
I commenti possono essere introdotti tramite il simbolo ”%” e possono essere introdotti in righe a se stanti o subito dopo un comando eseguito.
Quando creiamo una sottosezione di codice e ne inseriamo il titolo, la riga successiva, se introdotto un commento, sarà il testo che Matlab darà come output una volta chiamato l’Help dalla Command Window. Per questo motivo è utile introdurre una sezione iniziale in cui andremo ad illustrare lo scopo del nostro script.
Come condividere uno script?
Invece di condividere direttamente i file codice di Matlab, potremmo pubblicarlo invece in altri tipi di documenti in formato html, xml, doc, pdf…
Tramite il pulsante Publish, lo script viene eseguito e pubblicato in formato html di default.
I titoli delle aree specifiche sono linkati all’inizio del documento html.
Per specificare invece il formato, apriamo la tendina del pulsante Publish e clicchiamo su Edit Publishing Options.
Sono ora invece descritte le funzioni che serviranno per comprendere e riapplicare i concetti introdotti precedentemente.
FUNZIONI | UTILIZZO |
---|---|
clear | Cancella tutte le variabili nel Workspace |
clc | Cancella la Command Window e posiziona in alto il cursore |
figure | Apre una finestra dove potremo creare un immagine |
plot(X,Y) | Crea un grafico 2-D di Y rispetto a X |
ylabel(‘testo’) | Crea un titolo di testo sull’asse y |
xlabel(‘testo’) | Crea un titolo di testo sull’asse x |
title(‘testo’) | Crea un titolo di testo alla figura |
legend | Inserisce la legenda nella figura corrente |
legend('BTC','ETH','Location','North') | Inserisce la legenda rinominando i vari dati nell’ordine di plot nella figura corrente. Location per attivare la posizione del riquadro legenda. North indica la posizione all’interno della figura |
% | Riga di commento |
hold on.. codice ..hold off | Per mantenere gli assi fissi e successivamente aggiungere altre linee sulla stessa rappresentazione cartesiana |
Esercizio: Visualizzazione grafica capitalizzazione di mercato di Bitcoin (BTC) ed Ethereum (ETH)
In questa seconda esercitazione sfrutteremo il file First72dayof2018.mat dell’esercitazione precedente dove sono presenti i dati sulla capitalizzazione di mercato di Bitcoin.
- Importiamo i dati riguardanti la capitalizzazione di mercatop di Ethereum dal Coinmarketcap sempre dal 1° di Gennaio al 13 Marzo in un file .xlsx (vedi lezione precedente)
- Importiamo la tabella ottenuta in variabili vettoriali su Matlab (vedi lezione precedente)
- Importiamo ora i dati dell’esercitazione precedente dal file First72dayof2018.mat (solo variabili Date e MarketCap)
- Una volta che abbiamo le nostre variabili di dati possiamo salvare un nuovo file .mat (BTC_ETH_Cap) che ci potrebbe tornare utile successivamente
Ora che abbiamo i dati non ci resta che creare il nostro script sezione per sezione.
1° Sezione: Titolo e spiegazione dello script
%% Plotting BTC and ETH against Date
%This is a script from Matlab Basic Course on Steemit platform - <https://steemit.com/@daedevils >
%
%This script load a file *BTC_ETH_MARKETCAP.mat* with three variables:
% * Date --> 71x1 Datetime representing days from 1° January to 13 March
% * BTC_MarketCap --> 71x1 double representig daily Bitcoin Market Capitalizzation
% * ETH_MarketCap --> 71x1 double representig daily Ethereum Market Capitalizzation
%
%Plots them in the same figure with a legend
clear % delete Workspace
clc % delet Command Window
Questa prima sezione va a creare il testo che verrà mostrato nella Command Window quando lo script viene chiamato col comando Help.
help Script_ETH_BTC_MARKETCAP
2° Sezione: Importazione dati
%% Loading data from .mat file
load BTC_ETH_MARKETCAP % BTC_ETH_MARKETCAP.mat is in "Lesson03" folder
3° Sezione: Tracciamento dati
%% Plotting BTC and ETH against Date vector
figure
hold on
plot(Date,BTC_MarketCap)
plot(Date,ETH_MarketCap)
In questa sezione andiamo a tracciare la capitalizzazione di mercato di Bitcoin ed Ethereum dal 1° di Gennaio ad oggi sulla stessa figura.
4° Sezione: Inserimento label e legenda
%% Insert label and legend
xlabel('Date')
ylabel('Market Cap. in bilion USD')
title('BTC-ETH daily market capitalizzation')
legend('BTC','ETH','Location','North')
Concludiamo lo script abbellendo il nostro grafico in output inserendo una legenda e dei titoli.
Conclusioni
Anche in questa lezione ho deciso di creare una piccola esercitazione di esempio molto semplice per fare in modo di familiarizzare con le funzioni principali e l’editor degli script.
Possiamo notare che le immagini sono ottenute eseguendo sezione per sezione.
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 03" e selezionarla nella Current Folder.
Qui il link di condivisione della cartella Drive. Potete trovare anche lo script in formato html all'interno della cartella.
Bibliografia e fonti
- Corso di Fondamenti di Matlab al Politecnico di Milano
- Corso online Matlab Fundamentals fornito da MathWorks
- L'esercitazione è creata interamente dal Team Daedevils
Fonti immagini:
- CCO licence
- Le restanti immagini sono create dal Team Daedevils e sono di sua proprietà
Indice
CLICK HERE AND VOTE FOR "DAVINCI.WITNESS"
Devo purtroppo muovere una critica perchè, a mio parere, utilizzare matlab per fare un grafico del mercato è inutile. Io lo uso in maniera intensiva a scopo ingegneristico, per stabilire se i sistemi retroazionati sono conformi alle specifiche, utilizzo simulink.. ma utilizzare una "calcolatrice scientiifica" per fare un grafichetto di mercato è veramente imbarazzante. Credo che questo sia solo un esempio, ma spero che migliorerai i contenuti.. lo stesso grafico si può fare con python, utilizzando qualsiasi editor di testo e compilando con un compiler anche di 10 Mb. Utilizzare oltre 10 Gb di programma, a pagamento, solo per spiegare come fare il grafico del BTC è, ripeto, un pessimo modo di spiegarne le potenzialità. Una delle più GRAVI mancanze del tuo tutorial è stato non parlare della moltiplicazione e divisione puntuale (sai cos'è? Come fai a non parlarne!)! Non saprei, buttarsi sui grafici alla seconda lezione mi sembra un ottimo modo di come NON fare un tutorial matlab ed un ottimo modo di dimostrare che non si sa usare matlab.
@bjtcoin Rispetto il tuo punto di vista ma non sono d'accordo.
Sono semplicemente tre lezioni e lo scopo di queste esercitazioni non è fare dei semplici grafici ma familiarizzare con l'ambiente e introdurre i principali comandi.
Anche io lo uso a scopo ingegneristico ma volevo arrivare piano piano a concetti che andranno spiegati con delicatezza. Questo corso è una semplice introduzione base che probabilmente sarà seguito da uno simulink, risoluzione di sistemi meccanici dinamici con equazioni differenziali linearizzate e poi si vedrà.
Ho solo spiegato il funzionamento base, come ci puoi lavorare.
Non a caso è un corso base e nelle prossime lezioni parlerò di vettori, di matrici e di operazioni su di essi.
Con anche l'introduzione alle operazioni sulle matrici, moltiplicazione puntuale, determinanti, autovettori, autovalori ecc ecc...
Mi dispiace che non hai apprezzato, spero che potrai dare un altro tipo di giudizio con i post futuri.
Being A SteemStem Member