Champions League, un'indiscrezione clamorosa alla vigilia di Porto-Juventus\nJuventus, Allegri fa fuori Bonucci?\nUn rumors che riguarda un big bianconero agita la vigilia della partita dei bianconeri in Portogallo.\nPrima la multa, poi la tribuna. Si vocifera di un provvedimento clamoroso nei confronti di Leonardo Bonucci dopo il battibecco avvenuto venerdì scorso in Juventus-Palermo con Max Allegri finito con la corsa del giocatore negli spogliatoi a fine partita senza salutare i tifosi.\nChampions: Allegri caccia Bonucci in tribuna?\nSecondo quanto riportato da Gazzetta.it, Bonucci domani sera potrebbe addirittura finire in tribuna.\nUn provvedimento evidentemente punitivo nei confronti di uno dei leader della Juventus, un messaggio chiaro che l'allenatore vorrebbe mandare ai suoi in un momento delicato della stagione: 'Chi sbaglia, paga'. Smentite, al momento, non ce ne sono state, sono comunque indiscrezioni ancora da verificare: Allegri parlerà alle 18.30 insieme, come di consueto per le partite in Europa, a capitan Gigi Buffon. Dopo la multa inflitta al giocatore, questa sera il tecnico spiegherà se davvero deciderà di punire ulteriormente Bonucci mandandolo in tribuna.\nPorto-Juventus: le scelte dei due tecnici\nDopo l'allenamento del mattino, i bianconeri sono partiti da Caselle nel primo pomeriggio. Allegri si è portato in Portogallo 23 giocatori (c'è anche Bonucci). Al Do Dragao la Juventus dovrebbe giocare con Buffon in porta; in difesa, da destra a sinistra, Lichtsteiner, Bonucci (o Barzagli in caso di punizione), Chiellini e Alex Sandro; a centrocampo Pjanic e Khedira, mentre in avanti ci sarà ancora spazio alle 'quattro stelle' Cuadrado, Dybala, Mandzukic e Higuain.\nDopo la conferenza stampa del tecnico, prevista per questa sera, si avranno ulteriori dettagli sulla formazione che scenderà in campo con il Porto per l'andata degli Ottavi di Champions.\nPrimavera Juve, Fabio Grosso lascia a fine stagione?\nPer quanto riguarda il futuro, la Juventus potrebbe cambiare il tecnico della Primavera. Fabio Grosso, tecnico che ha fatto bene sulla panchina delle giovanili bianconere, potrebbe fare il salto tra i 'prof'.\nGrosso piace molto a diversi club di serie B, in particolare modo al Crotone, come riporta Tuttomercatoweb.


Concept - SunLakeCity\nUN MODO NUOVO DI PENSARE, DI CONDIVIDERE, DI ABITARE\nUn elemento importante, innovativo e distintivo di SLC è la clubhouse: uno spazio che gli abitanti possono scegliere liberamente se e come vivere. Un elemento di convivialità e condivisione, dotato di alcune comodità a portata di mano, come la cucina ed altre attrezzature funzionali. Ad esempio si può organizzare una cena tra amici o vivere un’occasione speciale indipendentemente dal proprio spazio privato.\nSe si decide di utilizzare la clubhouse si possono sfruttare sia la struttura che gli elementi di cui è dotata in modo rilassato, godendo di tutto ciò che la circonda, inclusa un’ampia piscina a cielo aperto. La piscina completa il concetto di community e contribuisce a rendere davvero uniche sia l’atmosfera che l’esperienza di abitare in questo parco aperto, senza barriere, e sentirsi come in vacanza, con quella sensazione di piacere e continuo relax a 360°.\nIl fior di loto è il simbolo di Sun Lake City. Esso affonda le sue radici in Asia, dove significa purezza spirituale. Nel simbolismo buddista il significato più importante è la purezza del corpo e dell’anima. Non a caso viene considerato luogo perfetto per praticare yoga.\nUn luogo quasi spirituale in cui rigenerarsi tutto l’anno eppure essere connesso con il contesto urbano che si potrà vivere da soli o con la propria famiglia.\nQuando si arriva a Sun Lake City si può lasciare la propria vettura in autorimessa e iniziare un percorso in totale libertà e comfort. Si può salire con comode scale o in ascensore e si arriva alla clubhouse, in uno spazio comune dove si può verificare la propria buca-lettere e poi dirigersi verso la propria casa. Dunque un percorso a tappe scandito dal silenzio di un luogo libero da auto e incorniciato dal verde che armonizza il paesaggio.\nIn SLC, infatti, si cammina liberamente a piedi perchè le auto non possono circolare tra i viali che sono privi di qualsiasi barriera. Ci sono solo 2 strade\nprincipali da cui posso transitare il servizio postale e i mezzi di soccorso in caso di emergenza. Questo dettaglio avvalora il senso di libertà ed i bambini sono liberi di giocare spensieratamente.\nIl verde circonda Sun Lake City pur trovandosi il complesso a due passi dalla città. Si respira aria pulita e l’architettura “green-focused” dona un senso di relax anche solo alla vista. Il verde si trova, in parte, anche sopra i tetti ed è un tratto distintivo di Sun Lake City, un filo conduttore che armonizza le unità abitative e unisce visivamente la città giardino e i tetti delle case in modo lineare.\nA Sun Lake City, dunque, ci si ritrova liberi di godersi sole, verde, acqua, terra come dal proprio bungalow durante una vacanza, con accesso al proprio giardino privato e pur avendo a portata di mano tutte le comodità della città.\nSun Lake City è innovazione anche in termini di energia, ambiente e tecnologia.\nInnanzi tutto è un progetto sostenibile: si attinge energia direttamente dall’acqua del lago e con tale energia si riscalda d’inverno e si raffredda d’estate.\nIn inverno si sfrutta una termopompa che non utilizza né gas né petrolio ma prende l’energia dal lago per riscaldare. In estate si raffreddano le case senza termopompe ed in più ogni inquilino può acquistare, se desidera, ulteriori fan-coil per aumentare le performance e per le quali è già tutto predisposto.\nIl riscaldamento è anche a pavimento.\nSun Lake City è tech: in tutte le case si installerà il KNX, sistema di domotica con una programmazione standard di base e con la possibilità, se si desidera, di programmare moltissime funzionalità per vivere al meglio la propria abitazione. Un sistema intelligente che permette di godere di tutti gli ambienti al massimo delle prestazioni e sfruttare ogni spazio in modo diverso: clima, luce, finestre e tutte le altre funzioni sono altamente personalizzabili per soddisfare ogni tipo di esigenza e vivere in totale comfort ogni spazio.\nServizi e Smart Living\nSLC offre anche un’ampia gamma di servizi, di cui usufruire solo se si vuole.\nLa ditta bonacasa, specializzata in smart living, è a disposizione degli inquilini sin dal primo giorno.\nSi tratta di una piattaforma di servizi facoltativi che si può scegliere di sfruttare o meno. Una delle particolarità è che sono servizi “a km zero”.\nPer esempio: se si desidera una collaboratrice domestica per uno o più interventi, il partner bonacasa la individuerà nei dintorni di Caslano tra i propri fornitori, così come per un servizio di lavanderia del quale si dovesse necessitare velocemente.\nUna comodità non da poco: basti pensare all’esempio in cui si parte per le vacanze e non si sa a chi affidare le proprie piante per le 2 settimane che si è fuori casa. bonacasa può annaffiare le piante e occuparsi di tutte le incombenze relative alla casa durante l’assenza del proprietario.\nSe si ha bisogno di trovare in casa camicie sempre stirate o di ordinare una pizza in tarda serata, si ha sempre a disposizione un partner di fiducia che vi aiuta e vi fa vivere davvero in modo rilassato.


Pride, la nuova linea firmata da Mariah Carey\nSu Instagram il lancio dei nuovi prodotti con un video decisamente accattivante\nNon solo musica. I grandi della musica sono soliti lanciare anche delle linee di abbagliamento, prodotti cosmetici e tanto altro ancora. Quando lo si fa per una giusta causa, l’accoglienza da parte del pubblico è sicuramente positiva. Mariah Carey sul suo profilo Instagram ha annunciato il lancio di Pride. Si tratta della nuova collezione firmata dalla voce di Emotions che celebra l’orgoglio LGBTQ+.\nUna limited edition che invita a celebrare “la vostra straordinarietà” e di esserne orgogliosi. T-shirt, calzini ma anche felpe dai colori sgargianti, che è possibile acquistare sul sito ufficiale della cantante.\nCon oltre dieci milioni di seguaci su Instagram, Mariah ha già totalizzato oltre 300.000 views con questo post. Insomma, un modo alternativo per celebrare i Pride che solitamente si tengono proprio in questo periodo, nella speranza di poter tornare a festeggiare quelle giornate in presenza per le strade delle nostre città.


La discarica abusiva sull’alveo del torrente Gugliotta\nLa scoperta della guardia di finanza e della polizia municipale di Carini\n20 Novembre 2019 - 08:40\nUn’area di circa 9.500 metri quadrati utilizzata come discarica abusiva. La scoperta della guardia di finanza e della polizia municipale di Carini, nell’ambito dei controlli a tutela dell’ambiente. L’area è stata individuata (grazie anche all’apporto della Sezione Aerea della Guardia di Finanza di Palermo) in via Moscala. All’interno della discarica: terra vegetale, inerti, sfabbricidi e materiali ferrosi per un volume di 800 metri cubi. Inoltre sono state riscontrate violazioni alle norme edilizie poiché è stato rinvenuto un muro di contenimento realizzato abusivamente nonché una tettoia di circa 45 metri quadrati ed un manufatto di circa 44 metri quadrati adibito a ricovero per animali.\nTanto la discarica quanto il muro sono risultati realizzati sull’alveo del torrente Gugliotta, oggetto di vincolo fluviale, causandone il suo restringimento. Inoltre per raggiungere l’area destinata a discarica è stato realizzato abusivamente un ponticello in cemento armato. “La situazione rilevata – spiegano dal Comando – evidenzia un mutamento dell’aspetto idrogeologico della zona con grave pericolo per la pubblica incolumità soprattutto nel caso di piogge, atteso che il modificato assetto determina l’impossibilità del normale deflusso delle acque piovane”.\nL’intera area è stata sottoposta a sequestro preventivo d’iniziativa, convalidato dalla Procura della Repubblica presso il tribunale di Palermo. Alla stessa Autorità è stato richiesto di poter eseguire opportuni carotaggi atti a verificare la presenza di eventuali residui di amianto o sostanze tossiche. La proprietaria del terreno su cui sorge la discarica è stata deferita in stato di libertà, per le violazioni alle norme disciplinate dal Testo unico ambientale nonché per il reato di abusivismo edilizio. Pesanti le sanzioni cui andrà incontro il responsabile. La legge, infatti, prevede l’arresto fino a tre anni e sanzioni pecuniarie fino a un massimo di 103 mila euro, oltre la confisca dell’area.\nRipulita la discarica del bivio Giacomino. Ma quanto durerà?\nDiscariche dismesse, la Regione accelera sulla chiusura definitiva. Ecco il piano


€ 13.34 € 15,70 (Iva inclusa)\nIl Fieno Greco è conosciuto come coadiuvante per il metabolismo del colesterolo e dei carboidrati. Il Concentrato Totale riunisce tutte le sostanze funzionali presenti naturalmente nei semi di questa pianta.\nPer garantire tutto il complesso delle sostanze funzionali, Aboca ha messo a punto un esclusivo processo tecnologico che permette di combinare l'Estratto Liofilizzato con il Fitocomplesso Totale al fine di garantire:\nProdotto incluso nel Registro degli integratori del Ministero della Salute, codice X AD 12374 - Y.\nFieno Greco concentrato totale della Linea Monoconcentrati Aboca è un Coadiuvante per il metabolismo del colesterolo e dei carboidrati.\nAboca consiglia di assumere 2 opercoli per due volte al giorno.\nProdotti Erboristici Cuore e colesterolo, Fitoterapia, Monoconcentrati solidi,\nIl codice di Fieno Greco - concentrato totale Aboca presso il punto vendita è: 2001.\nATTENZIONE: Le informazioni riportate nel sito non devono servire per assumere decisioni in merito al proprio stato di salute. In caso di disturbi, patologie o allergie consultate sempre prima il vostro medico curante. Se siete in gravidanza o allattate, consultate il vostro medico prima di assumere qualsiasi prodotto. Le informazione relative a: Fieno Greco - concentrato totale Aboca e altre presenti in questo sito sono state rilevate da documentazione online o cartacea fornita dai produttori. Erboristeria AngoloVerdeShop.it non si assume responsabilità riguardo i contenuti riportati ed in merito ad eventuali aggiornamenti o modifiche operate dagli stessi produttori.


Dispensa Matlab | PDF\nSalvaSalva Dispensa_Matlab per dopo\n28 visualizzazioni51 pagine\nMatlab - Riassunto funzioni\nIstruzioni Matlab Filtri\n-MATLAB2017 comadi util e carini\nCalcolo Simbolico Matlab\nLe basi del MATLAB\nCalcolo Numerico - Matlab\nMATLAB - Array e Struct\nDispense del corso base di programmazione scientifica in ambiente MATLAB\nA cura di Andrea Di Ferdinando\nCapitolo 1 Panoramica dellambiente MatLab\n1. Che cos MatLab\nPer comprendere lutilit ed il funzionamento di MatLab bisogna innanzi tutto spiegare lorigine del termine MatLab, che deriva da Matrix Laboratory. MatLab infatti fu inizialmente scritto per fornire un accesso pi immediato ed intuitivo ai software sviluppati nellambito dei progetti LINPACK e ESIPAC, che si rivolgevano allutilizzo ed alla programmazione di matrici. Ancora oggi, uno degli aspetti pi importanti di MatLab quello di presentare una serie di strumenti per lo studio e la risoluzione di problemi che coinvolgono matrici e vettori, permettendo di scrivere programmi pi facilmente e pi velocemente rispetto ai comuni linguaggi di programmazione, come ad esempio il C o il Fortran. Nel corso degli anni, tuttavia, MatLab ha ricevuto un notevole sviluppo. Le routine numeriche sono state perfezionate e la loro capacit stata notevolmente ampliata; sono state aggiunte numerose funzioni al programma, e le capacit grafiche sono aumentate per rendere linterfaccia sempre pi facile da usare. Oggi MatLab un ambiente di sviluppo che integra calcolo matematico, grafica e programmazione scientifica, il tutto in uninterfaccia familiare e facile da usare, che permette di risolvere varie classi di problemi. La versione attuale di Matlab non si limita pi al solo calcolo matriciale e numerico, ma presenta tutta una serie di funzioni per le applicazioni pi diverse nel campo scientifico, rendendolo uno dei programmi pi diffusi in campi quali l'elettronica, la progettazione di sistemi di controllo, l'analisi dei segnali, l'elaborazione di immagini, la chimica, la statistica e numerosi altri. Inoltre, la sua estrema facilit di utilizzo lo rende uno dei software pi utilizzati nei corsi universitari e nel mondo scientifico in generale. Il campo di applicazione di MatLab ulteriormente estendibile grazie ai toolbox, collezioni di funzioni adatte a particolari classi di problemi, come lanalisi dei segnali, le reti neurali, la logica fuzzy, i sistemi di controllo e molti altri. La lista completa dei toolbox disponibili pu essere trovata allindirizzo: http://www.mathworks.it/products/products_by_category.shtml\n2. Lambiente di lavoro\nLa prima volta che si apre MatLab, lambiente di lavoro appare come mostrato in Figura 1.\nFigura 1. Il desktop di MatLab Si possono osservare immediatamente alcune delle componenti principali di MatLab: - Nella parte superiore del desktop presente, come nelle classiche applicazioni per Windows, la barra dei menu (File, Edit, View, Web, Window, Help) attraverso la quale si pu accedere a tutte le funzioni di Matlab. - Sotto la barra dei menu presente la barra degli strumenti, costituita da una serie di icone che permettono di accedere in modo pi rapido alle funzioni pi importanti e maggiormente utilizzate. A destra nella barra degli strumenti presente un riquadro che indica la cartella di lavoro corrente, ossia la cartella dove MatLab cerca e salva i files. - Sotto la barra degli strumenti ci sono le finestre che ci permettono di lavorare in MatLab. La prima volta che si apre MatLab, sono visibili tre finestre: Workspace e Command History a sinistra, e Command Window a destra. - Infine, in basso troviamo la barra di stato dove vengono visualizzati alcuni messaggi di MatLab e dove presente il bottone Start, simile al bottone Start di Window, che ci permette di accedere in modo rapido ad alcune funzionalit di MatLab. possibile modificare e personalizzare il desktop, utilizzando i comandi del menu View o le icone presenti sulle finestre. possibile ad esempio nascondere una determinata finestra semplicemente facendo clic sul pulsante nellangolo superiore destro, oppure possibile ancorarla al desktop (docking) cliccando sul pulsante accanto ad esso. Inoltre, si possono specificare le caratteristiche del desktop selezionando la voce Preferences nel menu View: ad esempio, possibile cambiare il tipo di font utilizzato, le sue dimensioni e cos via. 3\nsempre possibile ritornare alla visualizzazione iniziale del desktop selezionando la voce Default nellopzione Desktop Layout del menu View. Di seguito viene riportata una descrizione delle principali caratteristiche delle finestre del desktop. Command Window La finestra Command Window (a destra nella Figura 1) viene utilizzata per impartire dei comandi a MatLab o per eseguire funzioni e script. Allinterno della Command Window presente una linea di comando, rappresentata da un prompt simile a quello dei sistemi DOS, ossia il simbolo >> che indica che il programma pronto a ricevere dei comandi (nella versione per studenti, il simbolo del prompt EDU>>) . Su tale riga possiamo digitare direttamente i comandi che MatLab deve eseguire, sia che si tratti di operazioni, sia che si tratti di funzioni particolari. possibile ad esempio utilizzare la Command Window comeuna normale calcolatrice, come mostrato nella Figura 2.\nFigura 2. La Command Window. Nellesempio di Figura 2 abbiamo eseguito, utilizzando MatLab, una semplice operazione matematica, ossia una somma tra due numeri (3 e 5). Per fare ci non dobbiamo far altro che scrivere 3 + 5 e premere il pulsante Invio. MatLab visualizza il risultato delloperazione facendolo precedere dalla parola ans (answer) e crea una nuova riga di comando sotto la prima: a questo punto il programma pronto per una nuova operazione. Per esempio, potremo dividere il risultato per due, per ottenere la media dei due numeri. Scriviamo semplicemente: >> ans / 2 e MatLab visualizzer sotto il nostro comando il risultato delloperazione: 4\nans = 4 >> Se non vogliamo che MatLab visualizzi il risultato delle nostre operazioni dobbiamo far seguire il nostro comando dalloperatore ; (punto e virgola). La variabile ans viene comunque creata, ma non ne viene visualizzato il valore nella Command Window. Per poterne osservare il contenuto, dobbiamo utilizzare la finestra di Array Editor (vedi pi avanti). Di seguito vengono riportate alcune funzionalit della finestra dei comandi: - possibile ripetere le ultime operazioni effettuate utilizzando i tasti ( ) e ( ) (freccia in alto e freccia in basso). - possibile cancellare il contenuto della finestra mediante il comando clc. - possibile digitare comandi diversi nella stessa riga separandoli con il simbolo , (virgola) se si vuole visualizzare il risultato di ogni comando, oppure con il simbolo ; (punto e virgola) se non si desidera visualizzarlo. - Se unistruzione troppo lunga si pu utilizzare loperatore di continuazione di riga ... (tre punti) per andare a capo. Launch Pad La finestra Launch Pad mostra lelenco dei toolbox e degli strumenti di MatLab installati nel computer, permettendo un rapido accesso ad essi. Come nella finestra Gestione Risorse di Windows, possibile espandere o ridurre ciascuna delle voci elencate. Per esempio, cliccando sul segno + a sinistra dellicona di Matlab, verranno mostrati tutti gli strumenti, i demo e le funzioni di help disponibili per MatLab (Figura 3). Cliccando sulla voce Help, ad esempio, potremmo accedere direttamente allhelp in linea di MatLab.\nFigura 3. La finestra Launch Pad Command History 5\nLa finestra Command History (Figura 4; in basso a sinistra in Figura 1) mostra tutti i comandi immessi precedentemente allinterno della Command Window. Ci pu essere utile non solo per ricordarsi di quello che si precedentemente fatto, ma anche per richiamare velocemente un comando: basta infatti selezionarne uno nella finestra Command History, trascinarlo nella Command Window e premere Invio, per ripetere nuovamente unoperazione.\nFigura 4. La finestra Command History Workspace La finestra Workspace mostra lelenco delle variabili create in memoria. Ritorneremo sul concetto di variabile pi avanti; per ora basta dire che le variabili sono degli oggetti che contengono una determinata informazione, che pu essere un numero, una stringa od un insieme di numeri o stringhe. Ad esempio, anche la parola ans che abbiamo incontrato precedentemente in realt il nome di una variabile che MatLab crea automaticamente e che contiene linformazione circa il risultato delloperazione che abbiamo effettuato. Perci, se visualizziamo la finestra Workspace, apparir la variabile ans (Figura 5) e le sue principali caratteristiche: dimensioni (Size), memoria utilizzata (Bytes) e tipo di dati (Class). Si noti che la finestra Workspace ci mostra solo un elenco delle variabili in memoria, ma non il loro contenuto.\nFigura 5. La finestra Workspace. Array Editor Se clicchiamo nella finestra Workspace sulla variabile ans (o su qualunque altra variabile attualmente nel workspace) appare una nuova finestra, denominata Array Editor, nella quale possiamo osservare il contenuto della variabile stessa. Nel caso della variabile ans precedentemente creata, ad esempio, la finestra appare come mostrato nella Figura 6.\nFigura 6. LArray Editor. 7\nSubito sotto la barra degli strumenti, che in questa sede non tratteremo, appare una matrice di caselle simile a quella che appare nei fogli Excel, che ci mostra il contenuto di tutte i valori contenuti nella variabile esaminata. Nel caso di ans, appare un solo valore, cio 4. Current Directory La finestra Current Directory (Figura 7) mostra tutti i file contenuti nella directory di lavoro, ossia la directory selezionata nella barra degli strumenti. Possiamo utilizzare questa finestra per avere un rapido accesso ai file del nostro progetto, per creare nuove directory, per trovare i files che ci interessano ed in breve per tutte quelle operazioni che riguardano la gestione dei nostri files.\nFigura 7. La finestra Current Directory. LHelp Browser Una finestra molto importante quella dellhelp (Figura 8), a cui possiamo accedere sia attraverso il menu Help, sia attraverso il menu View. Possiamo notare che la finestra di Help suddivisa in due pannelli: a sinistra lHelp Navigator, che consente di inserire i parametri di ricerca secondo la classica impostazione dei programmi per Windows; a destra il pannello di visualizzazione, in cui vengono visualizzati i documenti che soddisfano i criteri di ricerca.\nFigura 8. LHelp Browser. Esistono altri metodi per ricevere aiuto in MatLab: 1. Un primo metodo utile quando si vogliono visualizzare velocemente le informazioni riguardanti la sintassi ed il comportamento di una determinata funzione semplicemente quello di digitare nella Command Window il comando: help NomeF unzione . Ad esempio, per visualizzare le informazioni riguardanti la funzione per calcolare il seno (sin), possiamo scrivere: >> help sin a cui MatLab risponde con il messaggio: SIN Sine. SIN(X) is the sine of the elements of X. 2. Un secondo metodo che abbiamo a disposizione quello di digitare il comando: lookfor ParolaChiave, sempre nella Command Window. MatLab eseguir una ricerca in tutti documenti basata sulla parola chiave che abbiamo digitato, e visualizzer un elenco di funzioni, con relative descrizioni, nella cui prima riga di testo compare la parola chiave specificata. Questo metodo perci, a differenza di quello precedente, utile quando non sappiamo in anticipo qual il nome della funzione appropriata per una certa operazione. Ad esempio, se vogliamo calcolare la radice quadrata di un numero, ma non sappiamo il nome della funzione che implementa tale operazione in MatLab, possiamo scrivere: 9\n>> lookfor square MatLab visualizza un elenco di funzioni, di cui riportiamo solo una parte: MAGIC Magic square. REALSQRT Real square root. SQRT Square root. LSCOV Least squares with known covariance. LSQNONNEG Linear least squares with nonnegativity constraints. NNLS Non-negative least-squares. SQRTM Matrix square root. CGS Conjugate Gradients Squared Method .... la terza funzione quella che sembra fare al caso nostro. A questo punto, se vogliamo ulteriori informazioni su di essa, possiamo scrivere: help sqrt. Si noti che se avessimo scritto direttamente help square, avremmo invece ottenuto informazioni sulla funzione che permette di generare onde quadre, informazione che era del tutto inutile per i nostri scopi. 3. Un terzo metodo per chiedere aiuto consiste nel digitare nella Command Window il comando: doc NomeFunzione. Questo metodo simile al primo, ma a differenza del comando help MatLab ci mostra la finestra dellHelp Browser, ed in particolare la prima pagina della documentazione relativa alla funzione indicata. Digitando ad esempio il comando: >> doc sin apparir la seguente finestra:\nLa barra dei menu Nella parte superiore della finestra principale di MatLab (Figura 1) presente la barra dei menu. Nella visualizzazione standard tali menu sono 6: File, Edit, View, Web, Window e Help. Il numero ed il contenuto dei menu pu tuttavia variare a seconda delle operazioni che si stanno svolgendo. Per esempio, quando si opera sui file di programma (M-file) appaiono tre nuovi menu (Text, Debug 10\ne Breakpoints) che scompaiono quando si termina di lavorare con i file. Di seguito sono elencati i comandi pi importanti presenti nella barra dei menu. I comandi presenti solitamente nelle applicazioni Windows (Open, Close, Cut, Paste, etc.) non verranno considerati, se non quando il loro uso diverso da quello standard. 1. Menu File Import Data Save Workspace As Set Path Preferences Print Print Selcted File List 2. Menu Edit Delete Clear Command Windows Clear Command History Clear Workspace 3. Menu View Desktop Layout permette di selezionare il tipo di layout preferito, ossia la disposizione delle diverse finestre sul dektop cancella la variabile selezionata nella finestra Workspace cancella tutto il testo presente nella Command Window cancella lelenco dei comandi presente nella Command History elimina tutte le variabili caricate in memoria avvia unutilty che permette di importare datiin MatLab apre una finestra di dialogo per salvare su file nomi e valori delle variabili caricate in memoria apre una finestra di dialogo per impostare il percorso di ricerca dei file apre una finestra di dialogo per impostare diversi parametri di Matlab apre una finestra di dialogo per stampare il testo presente nella Command Window apre una finestra di dialogo per stampare solo le parti selezionate del testo contenuto nella Command Window visualizza un elenco cronologico dei file precedentemente aperti\nDock / Undock nome ancora / disancora la finestra attualmente attiva finestra Workspace View Options permette di modificare le opzioni di visualizzazione delle variabili nel Workspace\nCapitolo 2 Algoritmi ed elementi di programmazione in MatLab.\n1. Algoritmi e programmi\nUn algoritmo una successione di operazioni elementari che possono essere eseguite da un calcolatore per risolvere un determinato problema. In altre parole, un algoritmo rappresenta la soluzione ad un determinato problema. Una volta trovato lalgoritmo corretto per risolvere un determinato problema, affinch le operazioni specificate nellalgoritmo possano essere eseguite dal calcolatore necessario tradurle nel linguaggio macchina del calcolatore stesso. Dato per che scrivere direttamente in tale linguaggio sarebbe davvero molto difficile e dispendioso, sono nati a tal riguardo dei linguaggi di programmazione di livello pi alto, ovvero linguaggi dotati di un formalismo (grammatica e sintassi) che codificano gli algoritmi in un modo simile a quello che fa la logica umana. Un ulteriore programma (detto traduttore) si occupa poi di convertire tale codice nel linguaggio macchina del calcolatore. Oggi esistono diversi linguaggi di programmazione, che si differenziano in base alla tipologia di problemi a cui sono orientati; per citarne alcuni dei pi noti: C, C++, Fortran, Java, Basic, Perl, etc. Un programma la codifica di un algoritmo in un particolare linguaggio di programmazione. Uno stesso algoritmo pu dunque essere usato per creare diversi programmi, ciascuno scritto in un differente linguaggio di programmazione (Figura 9).\nFigura 9. Algoritmi e programmi. 12\nMatLab rappresenta uno di questi differenti linguaggi di programmazione. Le potenzialit di MatLab da questo punto di vista sono molte: 1- Gli algoritmi sono la base del linguaggio MATLAB. Potendo contare su una libreria di oltre 600 funzioni matematiche, statistiche e tecniche, sviluppate direttamente da esperti di matematica, MATLAB permette il rapido accesso agli algoritmi matematici pi complessi, senza il bisogno di doverli implementare da soli. Le routine numeriche sono rapide, precise e affidabili. I motori matematici principali incorporano le librerie di subroutine di algebra lineare LAPACK e BLAS e la libreria di elaborazione dei segnali FFTW, che rappresentano lo stato dellarte del calcolo numerico. 2- MatLab, come facile intuire dal nome, ottimizzato per operare su matrici e vettori e pu essere dunque utilizzato al posto di linguaggi di pi basso livello come C e C++, raggiungendo uguali prestazioni ma richiedendo meno attivit di programmazione. In questo modo, MatLab permette di concentrarsi maggiormente su concetti di alto livello, evitando invece le tediose attivit di sviluppo, debug e manutenzione di codici dedicati. 3- La potenza di calcolo di MatLab pu essere ulteriormente ampliata grazie ai toolbox, raccolte di funzioni e interfacce MATLAB, con i quali possibile affrontare problemi pi tecnici, come lelaborazione di segnali o il processamento di immagini. Tuttavia, sarebbe riduttivo considerare MatLab un semplice linguaggio di programmazione. L'ambiente MATLAB stato infatti concepito per il calcolo interattivo o automatico. Accanto alle avanzate funzioni matematiche sono presenti funzioni grafiche e strumenti di facile utilizzo che consentono di analizzare e visualizzare i dati in tempo reale, rendendo MatLab un ambiente di lavoro interattivo e flessibile. Con MatLab possiamo importare ed esportare dati, eseguire delle operazioni direttamente sulla riga di comando (nella Command Window), visualizzare il risultato di tali operazioni utilizzando le avanzate capacit grafiche messe a disposizione, il tutto in modo completamente interattivo, a differenza dei normali ambienti di sviluppo.\n2. Tipi di dati in MatLab: gli array\nQuando si utilizza un qualunque linguaggio di programmazione, la prima cosa che necessario imparare il tipo di dati che esso permette di gestire. Per ciascun tipo di dato il linguaggio fornir un insieme di operatori e funzioni per lelaborazione. In MatLab esistono 15 diversi tipi di dati, che hanno per tutti la stessa forma, ossia larray (Figura 10). Possiamo definire un array come un insieme di oggetti ordinati. Pi specificatamente, gli elementi di un array sono distribuiti su un certo numero di dimensioni che formano una griglia di indicizzazione, attraverso la quale possibile identificare in maniera univoca gli elementi. A seconda del tipo di oggetti contenuti nellarray si parla di numeric array, character array, cell array, e cos via. I tipi di oggetti gestiti da MatLab sono appunto 15 e sono mostrati in Figura 10.\nFigura 10. I tipi di dati in MatLab. In questa sede verr usato principalmente un solo tipo di array, quello numerico, ed in particolare il double array. Esso rappresenta larray numerico di default di MatLab; infatti, se scriviamo ad esempio nella riga di comando: >> 4 / 2 MatLab crea automaticamente, come gi dettoprecedentemente, una variabile ans che contiene il risultato delloperazione.\nSe ora rivolgiamo la nostra attenzione alla finestra Workspace, possiamo notare che la variabile ans, alla voce Class (ossia tipo di dato), considerata un double array, ossia un array di valori reali a doppia precisione, anche se si tratta in questo caso di un numero intero (cio 2). Alla voce Size, inoltre, possiamo osservare che, trattandosi di un solo valore, MatLab considera ans un array 1x1, ossia un array a due dimensioni in cui ciascuna dimensione contiene un solo elemento. Gli array a due dimensioni sono gli array pi comuni in MatLab. La prima dimensione viene chiamata riga e la seconda colonna. Casi speciali sono: 1. Gli scalari. Vengono chiamati scalari gli array a due dimensioni formati da una sola riga e da una sola colonna (come la variabile ans creata precedentemente). 2. I vettori. Vengono chiamati vettori gli array a due dimensioni formati da una sola riga (vettori riga) o da una sola colonna (vettori colonna). possibile creare un vettore riga in vari modi. Il modo pi semplice quello di digitarne tutti gli elementi, racchiusi da una coppia di parentesi quadre e separati con uno spazio od una virgola (scelta consigliata).\n>> riga = [1, 2, 3, 4, 5] riga = 1 2 3 4 5\nAllo stesso modo, possibile creare un vettore colonna. In questo caso, per, gli elementi vanno separati da un punto e virgola, oppure andando a capo. >> colonna = [1; 2; 3; 4; 5] colonna = 1 2 3 4 5 3. Le Matrici. Vengono chiamate matrici gli array a due dimensioni formati da almeno due righe e due colonne. Per creare una matrice possiamo combinare le tecniche viste precedentemente per i vettori riga e colonna. sufficiente cio digitare tutti gli elementi della matrice racchiusi tra parentesi quadre, separando le righe con un punto e virgola e gli elementi allinterno di una riga con una virgola o con uno spazio. Ad esempio: >> matrice = [1, 2, 3; 4, 5, 6; 7, 8, 9] matrice = 1 4 7 2 5 8 3 6 9\nIn MatLab possibile creare anche array a pi di due dimensioni. Tali oggetti vengono chiamati array multidimensionali. Per creare un array multidimesionale digitandone gli elementi non esiste un metodo diretto come per il caso delle matrici e dei vettori. Possiamo tuttavia estendere una matrice gi esistente. Ad esempio, possiamo estendere la matrice precedente. Il comando che dobbiamo utilizzare il seguente: >> matrice(:,:,2) = [10, 11, 12; 13, 14, 15; 16, 17, 18] matrice(:,:,1) = 1 4 7 2 5 8 3 6 9\nmatrice(:,:,2) = 10 13 16 11 14 17 12 15 18\nPossiamo immaginare il vettore multidimensionale appena creato come un libro che contiene 2 pagine, in ciascuna delle quali presente una matrice (Figura 11). Il comando utilizzato (matrice(:,:,2)=) dunque un modo per indicare a MatLab di creare una seconda pagina con i valori elencati.\nFigura 11. La rappresentazione grafica di un array multidimensionale.\n3. Le variabili\nNel paragrafo precedente si visto come creare degli array in MatLab. Larray rappresenta la forma generale di ogni tipo di dati in MatLab, e si visto come si possano creare diversi tipi di array (scalari, vettori, matrici e array multidimensionali) contenenti diversi tipi di dati (numeri, caratteri, etc). Nei prossimi capitoli si vedr come utilizzare gli array. Prima di tutto, per, importante conoscere il significato del termine variabile. In ogni linguaggio di programmazione il concetto di variabile sta a significare che una certa porzione della memoria del computer contiene un determinato valore, che pu essere di ciascuno dei 15 tipi di dati mostrati in Figura 10, e questo valore viene memorizzato fino a quando non assegniamo alla variabile un nuovo valore. Abbiamo gi visto, ad esempio, che MatLab crea automaticamente la variabile ans quando eseguiamo unoperazione nella riga di comando, ad esempio: >> 5 / 2 ans = 2.5000 Dato che ora ans contiene un valore numerico (2.5), possiamo utilizzare tale variabile al posto di un numero in qualunque operazione aritmetica e qualunque funzione che opera su numeri. Ad esempio, possiamo scrivere:\n>> ans / 2 ans = 1.2500 Il risultato delloperazione lo stesso che se avessimo scritto 2.5 / 2. Qual dunque il vantaggio di usare una variabile al posto di un numero? Il prossimo esempio servir a chiarire la questione. Supponiamo di voler calcolare larea di un triangolo, dati i valori di base ed altezza, che supponiamo essere di 5 e 3. Potremmo scrivere semplicemente: >> area = (5 * 3)/2 area = 7.5000 oppure utilizzare delle variabili >> base = 5; >> altezza = 3; >> area = (base * altezza )/2 area = 7.5000 Seppure in questo caso lutilizzo delle variabili comporti una maggiore lunghezza del codice, esso ci permette non solo di implementare la regola geometrica in modo pi semantico, ma anche di utilizzare la stessa formula al variare del valore di base ed altezza: >> base = 10; >> altezza = 2; >> area = (base * altezza )/2 area = 10 Quando le operazioni da effettuare sono pi di una come in questo caso, la possibilit di riutilizzare lo stesso codice per pi situazioni, senza la necessit di doverlo riscrivere, si rivela di grande utilit. Loperazione con cui diamo un valore ad una determinata variabile prende il nome di assegnazione ed utilizza loperatore di uguaglianza (=). C da notare, tuttavia, che tale operatore non ha, nel caso dellassegnazione, il significato di uguaglianza matematica. Esso sta a significare che alla variabile posta a sinistra (area nellesempio precedente) viene assegnato il valore indicato a destra ((base * altezza )/2). Invertire lordine delle due espressioni non pertanto corretto e genera un messaggio derrore da parte di MatLab. Il diverso significato di assegnazione ed uguaglianza mostrato ancora pi chiaramente nellesempio seguente: 17\n>> area = area + 1 area = 11 In matematica, area non pu mai essere uguale ad area+1. Tuttavia, lespressione ha senso se noi la interpretiamo come un assegnazione alla variabile area del valore contenuto in essa pi uno. Ad esempio, se uno stadio di calcio ha una capienza di 45 mila spettatori e vengono aggiunti altri 10 mila posti, la nuova capienza sar data da: >> capienza = capienza + 10000 capienza = 55000 Si noti che MatLab distingue tra lettere minuscole e maiuscole, per cui area ed Area sono ad esempio due variabili distinte. Per eliminare una variabile possiamo usare il comando clear. Per eliminare ad esempio la variabile appena creata capienza scriviamo semplicemente: >> clear capienza Per eliminare tutte le variabili attualmente in memoria possiamo usare il comando clear all.\nCapitolo 3 Organizzazione e gestione dei dati\n1. Creare un array\nNel capitolo precedente si visto come creare un array digitandone direttamente gli elementi. In questo paragrafo prenderemo in considerazione altri metodi per creare vettori, matrici e array multidimensionali.\n1.1 Utilizzo di funzioni quali zeros, ones and rand\nUn primo metodo consiste nellutilizzare funzioni predefinite in MatLab, quali zeros, ones e rand (o anche altre quali magic, eye, e cos via). In tal caso ci che dobbiamo specificare la grandezza di ciascuna dimensione dellarray che vogliamo creare. Il comando zeros creer un array contenente tutti zero, il comando ones una matrice contenente tutti uno, mentre il comando rand una matrice contenente valori casuali distribuiti uniformemente nellintervallo [0 1]. Ad esempio, il seguente comando crea una matrice di zero, con 3 righe e 2 colonne. >> matricezero = zeros(3,2) matricezero = 0 0 0 0 0 0\nSe volessimo creare una matrice di 5, e pi in generale una matrice di valori tutti uguali tra loro, possiamo utilizzare il comando ones. Ad esempio: >> matrice5 = ones(3,2) * 5 matrice5 = 5 5 5 5 5 5\nQuello che abbiamo fatto moltiplicare la matrice di uno creata con ones per lo scalare 5, ottenendo cos una matrice di 5 (per le operazioni sugli array si veda pi avanti).\n1.2 Creazione di array equamente intervallati\nSe gli elementi di un array sono, per ciascuna dimensione, equamente intervallati, si pu ricorrere a metodi per creare larray senza il bisogno di doverne digitare tutti i valori. Ci pu avvenire in 2 differenti modi: 19\nUtilizzo delloperatore : (due punti) Utilizzando loperatore : (due punti), si pu indicare a MatLab il valore iniziale e quello finale di una lista di numeri, insieme con il passo, ossia lincremento da un valore allaltro della lista. Se tale passo viene omesso, MatLab assumer per default un valore di incremento di 1. Di seguito viene mostrato un esempio, in cui viene creato un vettore contenente tutti i numeri pari compresi tra 2 e 20: >> vettorepari = 2:2:20 vettorepari = 2 4 6 8 10 12 14 16 18 20\nNellesempio seguente, invece, viene creata una matrice 2x3: >> matrice = [2:4; 3:5] matrice = 2 3 3 4 4 5\nUtilizzo delle funzioni linspace e logspace Attraverso le funzioni linspace e logspace possiamo creare array equamente intervallati allo stesso modo delloperatore due punti, ma invece di specificare il passo dobbiamo indicare il numero di elementi dellarray. Ad esempio, per creare lo stesso vettore creato precedentemente contenente i numeri pari compresi tra 2 e 20 dobbiamo scrivere: >> vettorepari = linspace(2,20,10) vettorepari = 2 4 6 8 10 12 14 16 18 20\nOssia dobbiamo creare un vettore contenenti 10 valori compresi tra 2 e 20. Se omettiamo di indicare il numero di elementi, MatLab crea automaticamente un vettore di 100 elementi. Per creare una matrice possiamo combinare due funzioni linspace: >> matrice = [linspace(1,5,3); linspace(2,6,3)] matrice = 1 2 3 4 5 6\nLa funzione logspace simile a linspace, ma a differenza di questultima crea vettori logaritmicamente intervallati. Ad esempio:\n>> matricelog = logspace(1,2,5) matricelog = 10.0000 17.7828 31.6228 56.2341 100.0000\n2. Accedere agli elementi di un array\nIn un array, possibile identificare ciascun elemento mediante una serie di indici che indicano la posizione dellelemento nellarray. Pi specificatamente, c bisogno di tanti indici quante sono le dimensioni dellarray, e ciascun indice indica la posizione dellelemento in un certa dimensione. In un matrice, ad esempio, ci sono due indici che indicano la riga e la colonna in cui si trova lelemento. Data ad esempio la matrice A A= 1 5 9 2 6 10 3 4 7 8 11 12\nper accedere allelemento 5 dovremo scrivere: >> A(2,1) ans = 5 Ossia dovremo indicare a MatLab che vogliamo accedere allelemento nella seconda riga e nella prima colonna. Possiamo modificare il valore di tale elemento semplicemente scrivendo: >> A(2,1) = 0 A= 1 0 9 2 6 10 3 4 7 8 11 12\nSe vogliamo selezionare non un singolo elemento dellarray, ma un insieme di elementi, possiamo utilizzare loperatore : (due punti). Ad esempio, per selezionare gli elementi 6 7 e 8 della matrice precedente possiamo scrivere: >> A(2,2:4) ans = 6 7 8 21\nSe vogliamo selezionare unintera riga, o unintera colonna, possiamo utilizzare loperatore : da solo. Ad esempio, per selezionare tutti gli elementi della seconda colonna scriveremo: >> A(:,2) ans = 2 7 10 Infine, possibile anche selezionare righe o colonne non contigue tra loro. Il seguente codice seleziona ad esempio la seconda e la quarta colonna: >> A(:,[2,4]) ans = 2 7 10 4 8 12\nNel caso di un vettore, valgono le stesse regole viste per le matrici. Ad esempio, dato il vettore V: V= 1 2 3 4 5 6\nPer accedere allelemento 4 possiamo scrivere: >> V(1,4) ans = 4 Abbiamo cio indicato a MatLab di selezionare lelemento nella prima riga e nella quarta colonna. Dato tuttavia che si tratta di un vettore, ed in particolare in questo caso di un vettore riga, possiamo omettere di indicare lindice della riga e scrivere pi semplicemente: >> V(4) ans = 4 Lo stesso discorso vale per i vettori colonna.\n3. Operazioni matematiche sugli array\nCome gi abbiamo avuto modo di vedere nei capitoli precedenti, in MatLab possiamo effettuare operazioni matematiche sui dati. In generale utile distingue tre casi, in base al tipo di operandi: 1. operazioni scalare scalare 2. operazioni array scalare o scalare array 3. operazioni array - array\n3.1. Operazioni scalare - scalare\nQuando entrambi gli operatori sono degli scalari, possiamo effettuare semplici operazioni aritmetiche tra numeri interi o reali. MatLab utilizza i simboli +, -, *, / e ^ per eseguire le operazioni classiche, ossia rispettivamente la somma, la sottrazione, la moltiplicazione, la divisione e lelevamento a potenza. Il simbolo \_ inoltre utilizzato per la divisione sinistra o inversa. possibile combinare a piacere tali simboli per scrivere espressioni matematiche di varia lunghezza. Quello a cui dobbiamo prestare attenzione, tuttavia, sono le regole di precedenza degli operatori. Ad esempio, la seguente operazione: >> x= 5 + 3 - 4 ^ 2 potrebbe essere interpretata in vari modi. Potremmo calcolare il quadrato della somma di tre numeri (5, 3 e -4) oppure potremmo calcolare prima la somma tra 5 e 3 e poi sottrarre il quadrato di 4. Quale delle due linterpretazione corretta? Per rispondere alla domanda, dobbiamo conoscere appunto le regole di precedenza utilizzate da MatLab: Livello di precedenza 1 (livello pi alto) 2 3 (livello pi basso)\nElevamento a potenza Moltiplicazione e divisione Addizione e sottrazione\nA parit di livello di precedenza, inoltre, le espressioni matematiche sono valutate da destra a sinistra. In base a queste regole, dunque, lespressione precedente viene interpretata nel secondo modo indicato, producendo il seguente risultato: x= -8 Ma se il nostro scopo era invece laltro, se volessimo cio elevare al quadrato la somma dei tre numeri (5, 3 e -4), come potremmo comunicarlo a MatLab? Per risolvere questi problemi possiamo utilizzare le parentesi tonde. Matlab infatti esegue prima le operazioni racchiuse tra parentesi tonde. Se ci sono pi parentesi, vengono valutate prima quelle pi interne. Nellesempio precedente, possiamo perci scrivere: >> x= (5 + 3 - 4) ^ 2 x= 23\n16 In genere, buona norma utilizzare sempre le parentesi tonde, anche quando non sono necessarie, proprio per evitare errori di interpretazione.\n3.2. Operazioni array - scalare o scalare array\nQuando uno dei due operandi uno scalare e laltro un array, loperazione equivalente ad eseguire una serie di operazioni tra gli elementi dellarray e lo scalare. Ad esempio, il prodotto di una matrice A per lo scalare 5 equivalente a moltiplicare ciascun elemento della matrice per 5: A= 1 5 9 2 7 10 3 4 7 8 11 12\n>> A * 5 ans = 5 10 15 20 25 35 35 40 45 50 55 60 La stessa regola vale anche per la divisione, laddizione e la sottrazione. Nel caso della divisione, tuttavia, a differenza delle altre tre operazioni, dobbiamo cambiare operatore a seconda della posizione dello scalare: se lo scalare il secondo operando possiamo continuare ad utilizzare il simbolo /, mentre quando lo scalare il primo operando dobbiamo utilizzare loperatore ./, come nellesempio seguente: >> 5 ./ A ans = 5.0000 1.0000 0.5556 2.5000 0.7143 0.5000 1.6667 0.7143 0.4545 1.2500 0.6250 0.4167\nSe proviamo ad utilizzare loperatore / MatLab segnala un messaggio derrore, in quanto interpreta loperazione come una divisione tra array (si ricordi che uno scalare una matrice 1 x 1). La presenza del simbolo . (punto) davanti a quello di divisione indica invece a MatLab che loperazione va eseguita elemento per elemento. Anche nel caso delloperazione di elevazione a potenza, loperatore .^ deve essere utilizzato al posto delloperatore ^, sia nel caso in cui lo scalare sia il primo operando che nel caso in cui sia il secondo. Ovviamente, il risultato non lo stesso nei due casi. >> A .^ 2\nans = 1 4 9 16 25 36 49 64 81 100 121 144 >> 2 .^ A ans = 2 32 512 4 64 1024 8 16 128 256 2048 4096\nNel primo caso eleviamo ogni elemento della matrice al quadrato. Nel secondo caso eleviamo 2 alla potenza di ciascun elemento della matrice. Se si usa loperatore ^ senza punto, loperazione equivale a moltiplicare larray per se stesso n volte e quindi diventa un caso di operazione array array (si veda il paragrafo successivo). Per questo motivo, per utilizzare loperatore ^ la matrice deve essere quadra.\n3.3 Operazioni array - array\nPer quanto riguarda le operazioni tra due array (vettore vettore, vettore matrice, matrice vettore o matrice matrice), esistono in MatLab due classi di operazioni aritmetiche: A. operazioni elemento per elemento, come nel caso degli scalari, caratterizzate dal punto davanti al simbolo di operatore B operazioni tra array, definite dalle regole dellalgebra lineare Per quanto riguarda la prima classe di operazioni, gli array devono necessariamente avere la stessa dimensione. Ad esempio: A= 1 3 2 4\n>> B = [2 4; 6 8] B= 2 6 4 8\n>> A .* B ans = 2 18 8 32\nIn pratica, quello che facciamo con loperazione .* moltiplicare gli elementi delle due matrici tra di loro, ossia 1*2, 2*4, 3*6 e 4*8. Lo stesso principio si applica anche alladdizione, alla sottrazione, alla divisione e allelevamento a potenza. Si noti, tuttavia, che nel caso delladdizione e della sottrazione, poich le due classi di operazioni coincidono, non si usa mai il punto davanti al simbolo delloperatore. Per quanto riguarda la seconda classe di operazioni, valgono le regole dellalgebra lineare. Ad esempio, nel caso della moltiplicazione tra array, le dimensioni interne devono corrispondere. In altre parole, data la matrice M1 [m x n] e la matrice M2 [o x p], affinch loperazione tra M1 e M2 sia definita deve essere: n = o. Larray risultante avr come dimensioni [m x p]. Ad esempio: >> M1 = [1 2 3] M1 = 1 2 3\n>> M2 = [2 4; 3 6; 4 8] M2 = 2 3 4 4 6 8\n>> M1*M2 ans = 20 40\nLoperazione definita in quanto M1 una matrice [1 x 3] e M2 una matrice [3 x 2]. Le dimensioni interne sono dunque le stesse ( = 3). La matrice risultante [1 x 2]. Ciascun elemento di tale matrice il risultato del prodotto scalare tra una riga di M1 ed una colonna di M2. Ad esempio, il prodotto scalare tra la prima (ed unica) riga di M1 e la prima colonna di M2 : 1*2 + 2*3 + 3*4 = 20 mentre il prodotto con la seconda colonna : 1* 4 + 2*6 + 3*8 = 40\n4. Operatori relazionali e logici\nOltre agli operatori matematici visti nel precedente paragrafo, MatLab mette a disposizione anche degli operatori di tipo relazionale e logico. Gli operatori relazionali permettono di confrontare variabili e array. In MatLab ne sono presenti sei: < <= 26 minore minore o uguale\n> >= == ~=\nmaggiore maggiore o uguale uguale diverso\nCome nel caso delle operazioni matematiche, anche nel caso delle operazioni relazionali possiamo distinguere tre situazioni: 1. Operazioni scalare scalare. Questo il caso pi semplice. Il risultato del confronto pu essere falso (0) o vero (1) a seconda degli operandi e del tipo di relazione. Ad esempio: >> C = 14>10 C= 1 2. Operazioni scalare array o array scalare. Il confronto viene eseguito tra lo scalare e tutti gli elementi dellarray. Il risultato un array di 0 ed 1, come nellesempio seguente: A= 5 6 4 7\n>> C = A>5 C= 0 1 0 1\n3. Operazioni array array. Vengono confrontati i singoli elementi di un array con i corrispondenti elementi dellaltro. Il risultato un array delle stesse dimensioni dei due operandi, contenente 0 ed 1. Un esempio: B= 8 9 3 3\n>> C = A>B C= 0 0 1 1\nUnistruzione relazionale viene valutata da sinistra a destra e tutti gli operatori relazionali hanno lo stesso livello di precedenza. consigliabile comunque racchiudere unistruzione relazionale tra 27\nparentesi tonde per agevolare la lettura del codice. Per quanto riguarda gli operatori logici, invece, quelli utilizzati da Matlab sono 3: ~ & | NOT AND OR\n~A restituisce un array avente le stesse dimensioni di A, i cui elementi sono pari a 1 se quelli di A sono nulli; pari a 0, altrimenti. A&B restituisce un array delle stesse dimensioni di A e B, i cui elementi sono pari a 1 se i corrispondenti elementi di A e B sono ENTRAMBI diversi da 0; pari a 0 se almeno uno tra i due elementi di A e B uguale a 0. A|B restituisce un array delle stesse dimensioni di A e B, i cui elementi sono pari a 1 se almeno uno tra i due elementi corrispondenti di A e B diverso da 0; pari a 0 se sono ENTRAMBI uguali a 0. La presenza di operatori relazionali e logici introduce nuovi livelli di precedenza: Lvello di precedenza 1 (livello pi alto 2 3 4 5 (Livello pi basso)\nparentesi tonde operatori aritmetici e operatore NOT; da sinistra a destra operatori relazionali; da sinistra a destra AND OR\n4. Funzioni predefinite\nOltre alle classiche operazioni matematiche, relazionali e logiche possibile applicare ai dati (scalari, vettori, matrici ed array multidimensionali) una serie di funzioni predefinite in MatLab. La lista completa delle funzioni consultabile sullhelp di MatLab. Per utilizzare una funzione basta scriverne il nome facendolo seguire da delle parentesi tonde, allinterno della quale vanno inseriti i parametri della funzione. Ad esempio: V= 1 2 3 4 5 6\n>> M = mean(V) M= 3.5000 Tale codice calcola la media degli elementi del vettore V e pone tale risultato allinterno della variabile M. Se V una matrice, il risultato della funzione un vettore riga i cui elementi corrispondono alla media delle corrispondenti colonne di V, come nellesempio seguente: V= 1 28 2 3\n>> M = mean(V) M= 2.5000 3.5000 4.5000\nDi seguito sono riportate alcuni esempi di funzioni utilizzate in MatLab: max (X) min (X) restituisce il valore massimo di X restituisce il valore minimo di X\nndims (X) restituisce il numero di dimensioni di X size (X) restituisce il numero di righe e colonne di X\nlength (X) restituisce il numero totale degli elementi di X sum (X) sort (X) find (X) restituisce la somma dei valori di X ordina gli elementi di Xin senso crescente restituisce gli indici degli elementi non nulli di x\nCapitolo 4 Operazioni di Input/Output\nMatlab dispone di vari strumenti che permettono di ottenere linput dallutente e di visualizzare loutput.\n1. Ottenere linput dallutente\nSe vogliamo che lutente immetta un determinato valore, possiamo utilizzare il comando input. Immaginiamo ad esempio di voler creare un programmino che calcola larea di un triangolo. Possiamo chiedere allutente di immettere i valori di base ed altezza del triangolo, memorizzare i valori immessi in appropriate variabili (ad esempio Base ed Altezza) ed a quel punto scrivere la formula per calcolare larea: Area = (Base * Altezza)/2. Quando utilizziamo il comando input dobbiamo specificare il messaggio che appare allutente. Per esempio: >> Base = input('Immettere il valore della base ') Immettere il valore della base 5 Base = 5 Il comando input visualizza il testo specificato, attende che lutente digiti un valore e registra linput nella variabile Base. Se si vuole invece che lutente scelga tra un certo numero di opzioni, si pu utilizzare il comando menu, che genera appunto un menu di opzioni. Ad esempio, se vogliamo che lutente specifichi se vuole calcolare larea di un triangolo, di un quadrato o di un rettangolo, possiamo scrivere: >> Scelta = menu (Forma geometrica:,Triangolo,Quadrato,Rettangolo) Apparir una piccola finestra con le tre opzioni specificate:\nIl valore della variabile Scelta dipende dalla scelta dellutente: 1 se viene scelta lopzione 1 (Triangolo), 2 se viene scelta lopzione 2 (Quadrato) e via dicendo. 30\n2. Visualizzare loutput in forma testuale\nNei capitoli precedenti si gi visto che, se non poniamo loperatore ; (punto e virgola) dopo una certa espressione, MatLab ci visualizza automaticamente il risultato dellespressione. Possiamo utilizzare questo metodo per visualizzare il contenuto di una variabile. Basta scrivere il nome della variabile e premere invio: >> A A= 1 3 2 4\nIl comando disp pu essere utilizzato allo stesso modo: >> disp(A) 1 2 3 4 Possiamo utilizzare il comando disp anche per visualizzare testi. In questo caso la sintassi prevede di racchiudere il testo tra due apici: >> disp ('ciao mondo') ciao mondo In MatLab possiamo anche modificare il modo in cui i dati numerici vengono mostrati sullo schermo. Per default Matlab utilizza il formato short che visualizza quattro cifre decimali. Ad esempio: >> C =2.5 C= 2.5000 In MatLab esistono vari formati, elencati di seguito: Formato short long short e long e bank + Visualizzazione 4 cifre decimali 16 cifre decimali 4 cifre decimali pi lesponente 15 cifre decimali pi lesponente 2 cifre decimali positivo, negativo o zero\nPer cambiare il tipo di formato sufficiente digitare format formato. Ad esempio: >> format 'long' 31\n>> C =2.5 C= 2.50000000000000\n3. Visualizzare loutput in forma grafica\nMatlab prevede numerose funzioni che permettono di creare grafici, sia bidimensionali sia tridimensionali. In questo sede ci limiteremo a considerare i soli diagrammi bidimensionali. Per visualizzare le informazioni sulle funzioni grafiche basta digitare help graph2d nella Command Window. I tipi di diagrammi a cui di riferiremo sono in particolare i diagrammi xy. Tali diagrammi sono utilizzati per rappresentare funzioni tipo y = f (x). La variabile indipendente (x) rappresentata lungo lasse orizzontale e la variabile dipendente (y) lungo lasse verticale. In generale, un diagramma pu essere ottenuto da dati sperimentali o da unespressione matematica. Per costruire correttamente un diagramma necessario che: 1. ogni asse abbia un titolo o etichetta con il nome di ci che rappresenta e lunit di misura. 2. ogni asse abbia segni di graduazione (tick marks) regolarmente distanziati. 3. se il diagramma visualizza pi curve deve essere presente una legenda per distinguerle. 4. se il diagramma visualizza diversi insiemi di dati sperimentali consigliabile utilizzare un simbolo diverso (cerchio, quadrato, croce, ecc.) per ogni insieme 5. non si utilizzino i simboli per distinguere curve generate da equazioni. Per generare un diagramma si utilizza la funzione plot (x, y) Se x e y sono vettori Matlab genera una curva con i valori di x sullasse orizzontale e i valori di y sullasse verticale. La seguente tabella riporta una serie di comandi utili per completare il diagramma: xlabel (testo) ylabel (testo) title (testo) grid on grid off axis ([xmin xmax ymin ymax]) axis square axis equal axis auto genera i titoli o etichette dellasse x genera i titoli o etichette dellasse y genera il titolo del grafico aggiunge una griglia al diagramma elimina la griglia dal diagramma imposta i valori dei limiti degli assi seleziona automaticamente i limiti degli assi in modo da ottenere un diagramma quadrato imposta una spaziatura identica per gli assi imposta automaticamente limiti ideali per una corretta visualizzazione\nLordine di questi comandi non rilevante purch seguano il comando plot e siano su ununica riga, separati dalloperatore virgola (,). Di seguito viene mostrato un esempio >> x = [0:0.1:52]; y = 0.4*sqrt(1.8*x); plot (x,y), xlabel ('Distanza (km)'), ylabel ('Altezza (km)'), ... title ('Altezza di un razzo in funzione della distanza orizzontale'), grid on, axis ([0 52 0 5]) 32\nMatLab visualizza la finestra seguente:\npossibile stabilire dei limiti di visualizzazione alla funzione, utilizzando il comando fplot. La sintassi generale di tale comando : fplot (stringa, [xmax xmin]), dove stringa il testo che descrive la funzione da rappresentare e [xmin xmax] lintervallo della varibile x che si vuole visualizzare. Per esempio, potremmo voler visualizzare solo una parte della funzione precedente: >> x = [0:0.1:52]; fplot('0.4*sqrt(1.8*x)',[0 10]), xlabel ('Distanza (km)'), ylabel ('Altezza (km)'), ... title ('Altezza di un razzo in funzione della distanza orizzontale'), grid on, axis ([0 52 0 5]) MatLab produce ora il seguente grafico:\nPer generare pi digrammi nella stessa figura possibile utilizzare il comando subplot. La sua sintassi generale : subplot (m,n,p), dove m e n rappresentano il numero di pannelli e p 33\nrappresenta il pannello in cui verr posto il grafico successivo. Il codice seguente crea due grafici affiancati che visualizzano due diverse funzioni: >> x = [1:10]; >> y1 = 2*x; >> y2 = x.^2; >> subplot(1,2,1); plot(y1) >> subplot(1,2,2); plot(y2) Il risultato il seguente:\npossibile anche visualizzare le due curve nello stesso grafico. Ci sono due modi principali per fare ci. Il primo quello di utilizzare il comando hold on (hold off serve a disabilitare tale opzione). Ad esempio: >> hold on >> plot(y1) >> plot(y2) produce il seguente risultato:\nLo stesso risultato si ottiene anche utilizzando un solo comando plot: >> plot(x,[y1' y2'])\nCapitolo 5 Programmare in MatLab\n1. I file in Matlab\nMatlab utilizza tre tipi di file: i MAT - file, i file dati e gli M-file, - I MAT-file hanno estensione .mat e permettono di salvare i nomi ed i valori delle variabili generate durante una sessione di lavoro. Sono file binari e pertanto possono essere letti soltanto dal software che li ha creati (ossia MatLab). - I file dati sono file ASCII (American Standard Code for Information Interchange), eventualmnete creati anche da altri programmi, che contengono dati che possiamo importare in MatLab. - Infine, gli M-file hanno estensione .m e sono utilizzati per scrivere sequenze di comandi (script e funzioni). Essendo file ASCII, gli M-file possono essere scritti utilizzando qualsiasi editor di testi. Matlab, tuttavia, prevede un editor molto utile che include funzioni di correzione e di debug. Per quanto riguarda il primo tipo di file, in esso possiamo salvare le variabili create nellambiente di lavoro, mediante il comando save. Ad esempio: >> save prova.mat salva tutte le variabili in memoria nel file prova.mat nella directory di lavoro. Per caricare successivamente le variabili si usa il comando load: >> load prova.mat Se si vogliono salvare soltanto alcune variabili (per esempio A e B) basta porre il loro nome dopo il nome del file. Ad esempio: >> save prova.mat A B Oltre a file contenenti variabili salvate mediante il comando save, possibile, come si anticipato sopra, importare dati da qualunque file di testo. Per caricare tali dati basta indicare il nome completo del file, compresa lestensione. Ad esempio: >> load prova.txt I dati saranno caricati in una variabile che ha lo stesso nome del file (senza estensione). Si possono importare dati anche direttamente da una cartella Excel, utilizzando il comando xlsread. Ad esempio: >> A = xlsread (prova.xls) 36\ncarica i dati dalla cartella prova.xls nellarray A. Il comando >> [A, B]= xlsread (prova.xls) importa invece i dati numerici nellarray A ed i testi nellarray B. Per rendere ancora pi facile limportazione dei dati, ASCII o binari, Matlab include inoltre unapplicazione chiamata Import Wizard (Figura 12). LImport Wizard accessibile selezionando Import Data dal menu File. Una volta selezionata tale voce, appare una finestra che permette di selezionare il file dal quale importare i dati. LImport Wizard visualizzer unanteprima dei dati contenuti nel file. Dopo aver impostato il separatore di colonna appropriato (di default selezionato lo spazio) bisogna premere il tasto Next. Apparir una finestra di dialogo che consente di selezionare le variabili da importare (data, textdata, colheaders). A questo punto basta premere il tasto Finish per terminare il processo di importazione.\nFigura 12. L'Import Wizard. Infine, Matlab prevede anche per quanto riguarda lesportazione la possibilit di utilizzare file di testo. Ci sono in particolare due opzioni per esportare un array come file ASCII delimitato: utilizzare il comando save seguito dallopzione ASCII, come nellesempio seguente: >> save prova.txt A ASCII oppure utilizzare la funzione dlmwrite. Questultima da preferirsi, poich permette di specificare il delimitatore e di esportare sottoinsiemi di array. Ad esempio, per usare la funzione dlmwrite specificando il punto e virgola come delimitatore, si digiti: >> dlmwrite (prova.tst, A, ;) 37\nSe non viene specificato nessun delimitatore, dlmwrite utilizza la virgola come delimitatore di default.\n2. I file script\nFino ad ora si utilizzato Matlab in modalit interattiva, ossia digitando le istruzioni direttamente nella finestra dei comandi. Questa modalit, tuttavia, utile solo in casi limitati, quando i problemi da risolvere sono molto semplici. Nelle applicazioni pratiche molto pi conveniente scrivere e salvare i propri programmi contenenti i comandi di Matlab in un file tipo M (M-file). Eseguire un M-file corrisponde a digitare in sequenza tutti i comandi in esso contenuti nella finestra dei comandi. Per eseguire un M-file basta digitarne il nome nella Command Window. In altre parole, gli M-file sono semplici file di testo che contengono sequenze di comandi che lutente intende far eseguire a Matlab. Esistono due categorie di M-file: i file script ed i file funzione. In questo paragrafo ci occuperemo dei file script. La propriet principale di tali file che i valori delle variabili create durante la loro esecuzione sono caricate nella sessione di lavoro e pertanto rimangono in memoria fino a quando non vengono esplicitamente cancellate attraverso un comando clear. Tali variabili sono perci definite globali. Per creare un nuovo file script sufficiente cliccare sulla prima icona a sinistra della barra dei comandi o selezionando il menu File/New/M-file. Comparir una nuova finestra di editing dellutlity Editor\_Debugger di Matlab, il cui utilizzo molto simile a quello di qualsiasi editor di testi (Figura 13).\nFigura 13. La finestra dellEditor/Debugger. A questo punto possiamo scrivere il codice che ci interessa, proprio come se fossimo sulla riga di comando. Tuttavia, leffetto dei nostri comandi si vedr solo dopo aver eseguito il file, e non quando premiamo il tasto invio. Possiamo inserire inoltre nel codice dei commenti per renderlo pi comprensibile a noi stessi e ad altre persone che dovranno eventualmente utilizzarlo. Per fare ci dobbiamo cominciare la linea utilizzando il simbolo % (percentuale). buona norma indicare nella prima riga di un file script il suo nome con lestensione (.m) e successivamente una spiegazione sintetica del suo scopo. Il menu Text contiene una serie di funzioni utili mentre si scrive un M-file. Esso permette di: a. inserire (Comment) o eliminare (Uncomment) commenti; b. aumentare (Increase Indent) o diminuire (Decrease Indent) i rientri (indentazione); c. evidenziare (Bilance Delimiters) il codice delimitato dalle parentesi (delimitatori bilanciati); 38\nd. impostare la funzione di rientro automatico (Smart Indent); e. visualizzare nella finestra dei comandi i valori delle variabili selezionate (Evaluate Selection). Si noti tuttavia che per visualizzare il valore di una variabile si pu pi semplicemente posizionare il puntatore del mouse sopra il suo nome: il valore corrispondente comparir allinterno di una piccola finestra chiamata Datatips. Dopo aver digitato il codice desiderato, bisogna salvare il file cliccando sullicona o selezionando lopzione Save del menu File. Il nome del file deve essere diverso da quello delle variabili utilizzate. A questo punto possiamo eseguire il programma semplicemente digitando il suo nome nella finestra dei comandi. Se MatLab segnala errori nello script, ossia si interrompe durante la sua esecuzione, possiamo utilizzare il debugger. Gli errori riconosciuti dal debugger sono di due tipi: 1. Errori di sintassi: Matlab visualizza un messaggio nella finestra dei comandi che descrive lerrore e la sua posizione. 2. Errori di runtime: sono dovuti a procedure di calcolo sbagliate. Tipicamente si verificano per determinati valori delle variabili di input. Nella fase di debug, unimportante funzione svolgono i breakpoint. Un breakpoint in Matlab un marcatore, visualizzato come un cerchietto rosso, in corrispondenza del quale viene interrotta temporaneamente lesecuzione del programma. Tale interruzione permette allutente di esaminare eventuali errori di sintassi o di runtime e di valutare i valori delle variabili correnti. Per impostare un breakpoint basta posizionare il cursore in una riga di testo e fare clic sullicona dei breackpoint . Il menu Breakpoint prevede inoltre opzioni che permettono di: 1. impostare (Set Breakpoint) o eliminare un breakpoint (Clear Breakpoint); 2. eliminare tutti i breakpoint (Clear All Breakpoint); 3. interrompere il programma quando viene generato un messaggio di errore (Stop If Error), di runtime (Stop If Warning), valori indefiniti (Stop If NaN), valori infiniti (Stop If Inf). Altre funzioni importanti durante il debug sono contenute nel menu Debug. In particolare: Opzione Step Step In Step Out Run Go Unitl Cursor Exit Debug Mode Funzione il codice viene eseguito un passaggio alla volta il controllo viene passato alla prima riga eseguibile della funzione chiamata (utenti esperti) il controllo ritorna alla funzione chiamante (utenti esperti) permette di eseguire interamente il codice del M-file fino al primo breakpoint impostato imposta un breakpoint temporaneo in corrispondenza della riga in cui si trova il cursore permette di uscire dalla modalit di debugging e tornare alla modalit di editing normale\n3. I file funzione\nI file funzioni sono molto simili agli M-file, ma a differenza degli script tutte le variabili in un file funzione sono locali: i loro valori sono cio disponibili solo allinterno della funzione. Un file funzione deve necessariamente iniziare con una riga di definizione della funzione, che 39\ncontiene lelenco delle variabili di input e output ed il nome della funzione: function [VariabiliOutput] = NomeFunzione (VariabiliInput) Nello scrivere una funzione bisogna fare molta attenzione alle seguenti regole: 1. 2. 3. 4. la parola function va scritta sempre in lettere minuscole le variabili di output devono essere racchiuse tra parentesi quadre le variabili di input devono essere racchiuse tra parentesi tonde il nome del file deve essere uguale al nome della funzione\nE utile scrivere una riga di commento, contenente le parole chiave della funzione, immediatamente dopo la riga di definizione della variabile per facilitare le ricerche con il comando lookfor. Per chiamare una funzione sufficiente digitarne il nome seguito dagli argomenti racchiusi tra parentesi tonde. Ad esempio, supponiamo di avere creato una funzione che calcola larea di un triangolo. La funzione avr la seguente forma: function Area = CalcolaArea (Base, Altezza) Se vogliamo calcolare larea di un triangolo avente come base 5 e come altezza 3, possiamo scrivere nella Command Window: >> Area = CalcolaArea (5, 3) Area = 7.5000\n4. Elementi di programmazione strutturata\nTutti i linguaggi di programmazione possiedono strumenti per controllare il normale flusso sequenziale nellesecuzione delle istruzioni. I costrutti principali per il controllo del flusso sono le istruzioni condizionali e le istruzioni iterative\n4.1 Istruzioni condizionali\nLe istruzioni condizionali vengono utilizzate quando si vuole che determinate istruzioni vengano eseguite solo quando si verificano condizioni specifiche. Esistono varie forme di istruzioni condizionali. La pi conosciuta ed utilizzata sicuramente lIF. Listruzione if Sintassi: if (EspressioneLogica) istruzioni end Lespressione logica rappresenta una condizione di controllo, che permette di decidere se eseguire o meno le istruzioni che precedono lend. 40\nPer esempio, se vogliamo calcolare la radice quadrata di x soltanto per x maggiori o uguali a 9, possiamo scrivere: if (x >= 9) y = sqrt (x) end Per convenzione, le istruzioni interne ad unistruzione condizionale vengono rientrate (indentazione) per semplificare la lettura dei programmi. Lespressione logica pu anche essere una combinazione di istruzioni. fondamentale comprendere il meccanismo di funzionamento della verifica dellespressione. Il risultato vero (e pertanto vengono eseguite le istruzioni) se tutti gli elementi risultanti dal calcolo sono pari a 1. Si consideri il seguente esempio: x = [3, -2, 0, 4, 6, 7] if x<0 disp (Almeno un elemento del vettore minore di zero) end In questo caso il comando disp non verr mai eseguito. Infatti x < 0 restituisce larray [0 1 0 0 0 0] i cui elementi non sono tutti pari a 1; pertanto, le istruzioni precedenti lend non vengono eseguite. Istruzioni condizionali annidate possibile annidare diverse istruzioni condizionali nel seguente modo: if (EspressioneLogica1) istruzioni1 if (EspressioneLogica2) Istruzioni2 end end Nel caso di istruzioni condizionali annidate lindentazione risulta particolarmente utile. Listruzione else Listruzione else si utilizza quando si intende eseguire un determinato insieme di istruzioni nel caso lespressione di controllo risulti vera, ed un altro insieme di istruzioni nel caso risulti falsa. La sua sintassi : if (EspressioneLogica) istruzioni1 else istruzioni2 end\nLstruzione elseif 41\nListruzione elseif viene utilizzata quando, nel caso lespressione logica di controllo sia falsa, non si voglia sempre eseguire il codice alternativo (come nel caso dellelse), ma solo in certe condizioni. La sua sintassi la seguente: if (spressioneLogica1) istruzioni1 elseif (EspressioneLogica2) istruzioni2 end Se la prima espressione verificata vengono eseguite le istruzioni1, altrimenti se essa falsa e contemporaneamente la seconda espressione vera vengono eseguite le istruzioni2. Listruzione switch Listruzione switch una struttura alternativa alle istruzioni if, else ed elseif. Essa utile quando il processo decisionale prevede numerose alternative. La sua sintassi la seguente: swicth (variabile) case valore1 istruzioni1 case valore2 istruzioni2 otherwise istruzioniOtherwise end Matlab confronta il contenuto di variabile (che pu essere uno scalare o una stringa) con il valore che segue il case: se i due elementi sono uguali vengono eseguite le istruzioni corrispondenti. Se nessun valore corrisponde al contenuto di variabile vengono eseguite le istruzioniOtherwise. La presenza dellistruzione otherwise facoltativa.\n4.2 Istruzioni iterative\nUn ciclo (loop) una struttura utilizzata per ripetere un insieme di istruzioni un certo numero di volte (passaggi). In generale, si distinguono due tipi di cicli: 1. Cicli for: il numero di passaggi noto in anticipo e viene perci impostato a priori 2. Cicli while: il numero di passaggi non noto in anticipo. Il ciclo termina quando viene soddisfatta una specifica condizione. Il ciclo for La sintassi dellistruzione for la seguente: for variabile = valori istruzioni end dove valori contiene i vari valori da assegnare a variabile. Pi specificatamente, al primo 42\npassaggio del ciclo, Matlab assegna il primo valore di valori a variabile, esegue le istruzioni, assegna il secondo valore, riesegue le istruzioni e cos via fino allultimo valore. Lesempio seguente: x=0; for i = 1:10 x=x+1; end incrementa il valore di x da 1 fino a 10. Lespressione 1:10 genera un vettore linearmente intervallato, con passo unitario, da 1 a 10. Quando Matlab entra nel ciclo per la prima volta, assegna alla variabile del ciclo (i) il valore 1, al secondo passaggio il valore 2 e cos via. Lultimo passaggio coincide con lultimo valore del range di valori. Terminato il ciclo vengono eseguite le istruzioni successive allend. Il ciclo while A differenza del ciclo for, il ciclo while si utilizza quando non si conosce in anticipo il numero di passaggi da eseguire. La sua sintassi : while (EspressioneLogica) istruzioni end Prima di ogni passaggio, Matlab verifica lespressione logica: se vera entra nel ciclo, esegue le istruzioni fino allend e torna a verificare la condizione; se ancora vera esegue nuovamente le istruzioni e cos via. Quando Matlab verifica che la condizione diventata falsa il ciclo termina e vengono eseguite le istruzioni successive allend. possibile ad esempio creare una versione dellesempio precedente utilizzando listruzione while al posto dellistruzione for. x=0; while (x<10) x = x+1; end Quando Matlab entra nel ciclo la prima volta, verifica se x diverso da 10; poich x uguale a 0, la condizione vera e vengono eseguite le istruzioni. Quando Matlab verifica che la condizione diventata falsa, x=10 nel nostro esempio, esce automaticamente dal ciclo. Si noti che, affinch il ciclo while venga correttamente implementato necessario accertarsi che il contenuto dellespressione logica venga aggiornato durante lesecuzione delle istruzioni. Se ci non avviene, infatti, Matlab non uscir mai dal ciclo, generando un loop infinito. Nellesempio precedente, ci assicurato dallistruzione che modifica il valore della variabile contenuta nella condizione, ossia x stesso.\n1. Avviare e chiudere una sessione di lavoro. Dati x=10 e y=3, utilizzare Matlab per effettuare i seguenti calcoli: u=x+y v = xy w = x/y z = sin x r = 8 sin x s = 5 sin (2y) p=xy k = xy/x f = (sin(x + y) x 10) g = 5 y 1) 2) 3) 4) 5) 6) 7) 8) 9)\n2. Trovare le funzioni di Matlab che permettono di calcolare la media e la deviazione standard di un insieme di dati. 3. Calcolare il logaritmo naturale di 24 ed il logaritmo in base 2 di 73. 4. Creare il vettore i cui elementi sono linearmente intervallati con incrementi di 0.4 tra 2 e 14. Utilizzare due metodi diversi. 5. Creare il vettore che ha 100 elementi linearmente intervallati tra 5 e 28. Utilizzare due metodi diversi. 6. Creare il vettore che ha 50 elementi linearmente intervallati tra -2 e 5. Utilizzare due metodi diversi. 7. Creare il vettore che ha 50 elementi logaritmicamente intervallati tra 10 e 1000. 8. Creare il vettore che ha 20 elementi logaritmicamente intervallati tra 100 e 10000. 9. Definito il vettore x = [-3, 4, 2, 1, 0, 2, 3, 5, 10] calcolare: 1. length (x) 2. size (x) 3. la media di x 4. assegnare agli elementi con indici pari il valore 7, digitando un unico comando\n10. Data la matrice: A= 1 -1 0 -6 0 2 3 0 6 0 -1 4 -3 2 -2 1\n1. si valuti A(: , 2) 2. si valuti le media della seconda colonna e della terza riga 3. si generi la matrice composta dagli elementi appartenenti ala seconda e quarta riga ed alla terza e quarta colonna 4. si generi la matrice composta dagli elementi appartenenti alla prima e terza riga ed alla seconda e quarta colonna 11. Data la matrice: A= 1 4 7 2 5 8 3 6 9\nsi estragga la sottomatrice di A composta dagli elementi Aij, tali che i=2,3 e j=2,3. 12. Tabellare la funzione log(x) nellintervallo [1,5] con passo 0.1. (Con il termine tabellare si intende creare una tabella, tale che la prima colonna rappresenti la variabile x e la seconda la variabile y). 13. Tabellare la funzione: y=e3x sin 5 x nellintervallo [1,10] con passo 1 (Il con pi). in Matlab si indica\n14. Creare un array x con 8 valori compresi tra 2 e 16. Creare una matrice A tale che: 1. la prima riga contenga i valori 3x 2. la seconda riga contenga i valori (3x)2 3. la terza riga contenga i valori x-8 4. Scambiare la prima e la terza riga di A. Creare la matrice C tale che: 1. la prima riga corrisponda alla seconda colonna di A 2. la seconda riga corrisponda alla terza colonna di A 3. la terza riga corrisponda alla prima colonna di A 15. Date le seguenti matrici: A= -7 16 4 9\nB= 6 -5 12 -2 C= -3 -9 6 2 Usare Matlab per: 1. Calcolare A+B+C 2. Calcolare A-B+C 3. Verificare la propriet associativa: (A+B)+C=A+(B+C) 4. Calcolare il prodotto elemento-per-elemento di A per B 5. Elevare al cubo gli elementi di B 6. Elevare 3 alla prima riga di C 16. La seguente tabella riporta il consumo medio, i km percorsi e lindice di affidabilit di 5 diverse automobili. 1 2 3 4 5 Consumo km/l 11,2 8,8 9,1 12 16,4 Km percorsi 240 550 302 667 980 Affidabilit 0.921 0.454 0.980 0.777 0.602 Usare Matlab per: 1. Calcolare i litri di benzina consumati da ogni automobile 2. Calcolare il consumo medio delle 5 automobili prese in esame 3. Calcolare la percorrenza media delle 5 automobili prese in esame 4. Usare le funzioni corrette per determinare lauto pi affidabile e quella che consuma di meno 18. Date le seguenti matrici: A=\n12 34 4 77 21 1 3 5 9 B=\n6 -5 12 -2 3 7 Calcolare: 1. il prodotto A*B 2. la somma di tutti gli elementi di A*B 3. il prodotto scalare tra la seconda colonna di A e la prima riga di B 46\n4. la media del prodotto scalare tra la prima colonna di A e di B, ed il prodotto scalare della seconda colonna di A e di B 19. Data la matrice: A= 3 -5 6 15 7 9 13 5 -4 10 8 4 12 2 11 1\n1. Trovare i valori minimi e massimi di ogni colonna. 2. Trovare i valori minimi e massimi di ogni riga. 20. Data la matrice: A= 3 -5 6 17 58 42 -19 -35 -4 80 9 44 3 2 55 1\nOrdinare gli elementi di ogni colonna e assegnare il risultato allarray B Ordinare gli elementi di ogni riga e assegnare il risultato allarray C Sommare gli elementi di ogni colonna e assegnare il risultato allarray E Sommare gli elementi di ogni riga e assegnare il risultato allarray D\n21. Dati i seguenti array: A= 1 2 7 3 B= ln (A) 1. Calcolare la somma degli elementi della seconda riga di B 2. Calcolare il prodotto scalare tra la seconda colonna di B e la prima colonna di A 3. Calcolare il valore massimo del vettore risultante dalla moltiplicazione elemento-perelemento dei primi tre elementi della seconda colonna di A e la prima riga di B 4. Calcolare la somma degli elementi della terza riga di A dopo averli divisi elemento-perelemento per i primi tre elementi della terza colonna di B 22. Creare un array tridimensionale D le cui tre pagine siano le seguenti matrici: A= 3 -2 1 6 8 5 7 9 10 47 4 4 9 2 100 7 42\nB= 6 7 -8 C= -7 10 3 -5 6 -9 2 1 8 9 5 2 -4 3 1\nTrovare lelemento massimo in ogni strato di D e lelemento massimo di D. 23. Creare uno script per simulare un modello computazionale in grado di computare la funzione logica AND. 24. Scrivere un file script per calcolare lipotenusa di un triangolo rettangolo i cui cateti misurano 12 cm e 16 cm. Il file deve avere due variabili di input ed una variabile di output. Inserire un commento che illustri lo scopo del codice. Salvare il file come teorema_pitagora.m. 25. Importare i dati da un file generato con il programma Excel. Calcolare la somma di tutti i dati e cancellare successivamente i dati dallarea di lavoro. 26. Importare i dati da un file di testo e calcolare la media e la deviazione standard di ogni colonna. 27. Dati i seguenti array: x = [-3 0 0 2 6 8] y = [-5 -2 0 3 4 10] Utilizzare Matlab per trovare gli elementi di x maggiori dei corrispondenti elementi di y. 28. Il seguente array contiene le quotazioni di un noto titolo azionario x = [220 330 221 198 208 206 188 196 200 204 219 205 177]. Usare Matlab per calcolare il numero di giorni in cui il titolo stato superiore a 200. Calcolare media e deviazione standard. 29. I seguenti array contengono le quotazioni di due titoli azionari in un periodo di due settimane: a = [220 330 221 198 208 206 188 196 209 200 198 204 219 205 177] b = [167 189 200 199 202 208 200 193 199 210 216 222 210 202 201] Usare Matlab per trovare il numero dei giorni in cui il titolo a stato superiore a b. Calcolare media e deviazione standard di a e b. 30. Dati i seguenti array: x = [-3 0 0 2 6 8] 48\ny = [-5 -2 0 3 4 10] Calcolare a mano le seguenti operazioni e valutarle successivamente con Matlab: 1. 2. 3. 4. 5. 6. 7. z=y<~x z=x&b z = ~ (x & b) z=x|b z=x|~b z = xor (x, y) z = xor (~ x+y, y)\n31. Dato il seguente array x = [1.92 0.05 -2.43 -0.02 0.09 0.85 -0.06] creare un programma per eliminare tutti gli elementi di x tali che -0.1 altrettanti 0 alla fine dellarray. x 0.1 e sostituirli con\n32. Un investitore ha 1000 azioni il primo giorno e intende comprare 100 azioni ogni giorno che il prezzo scende sotto le 200 lire e venderne 100 quando il prezzo sale sopra le 210 lire. Usare Matlab per calcolare: 1. la spesa totale per acquistare le azioni 2. il guadagno totale dovuto alla vendita delle azioni 3. il numero totale di azioni dopo 10 e 15 giorni 34. Utilizzando opportune istruzioni condizionali annidate, scrivere il codice per calcolare: y = ln x per x > 0 y = 5x per x 0; z = 4y per y 3 z = 2y per 1 y < 3 z = 0 per y < 1 z = 7x per x 0. 35. Utilizzare Matlab per calcolare quanto tempo occorre per accumulare un miliardo di lire in un conto corrente con 10 milioni iniziali e tenendo conto che vengono depositati 10 milioni alla fine di ogni anno e che la banca offre un tasso di interesse annuo del 5%. 36. Date le seguenti matrici: A= 3 6 7 B= 6 7 -8 9 5 2 -4 3 1 -2 8 9 1 5 10\nCalcolare A*B usando dei cicli e verificare il risultato. 37. Data la matrice: A= 3 -5 6 15 7 9 13 5 -4 10 8 4 12 2 11 1\nCalcolare la media di ogni colonna usando dei cicli e verificare il risultato. 38. Scrivere una funzione sin_gradi che accetta un angolo x espresso in gradi e restituisce sin x sempre in gradi. 39. Scrivere una funzione che riceve come argomento una temperatura espressa in gradi Fahrenheit e restituisce il valore corrispondente in gradi Celsius. (C=5/9(F-32)).\nCapitolo 1 Panoramica dellambiente MatLab......................................................... 2\n1. Che cos MatLab ....................................................................................................................2 2. Lambiente di lavoro ................................................................................................................2\nCapitolo 2 Algoritmi ed elementi di programmazione in MatLab. ......................... 12\n1. Algoritmi e programmi ..........................................................................................................12 2. Tipi di dati in MatLab: gli array.............................................................................................13 3. Le variabili .............................................................................................................................16\nCapitolo 3 Organizzazione e gestione dei dati ........................................................ 19\n1. Creare un array.......................................................................................................................19 1.1 Utilizzo di funzioni quali zeros, ones and rand................................................................19 1.2 Creazione di array equamente intervallati .......................................................................19 2. Accedere agli elementi di un array ........................................................................................21 3. Operazioni matematiche sugli array ......................................................................................23 3.1. Operazioni scalare - scalare ............................................................................................23 3.2. Operazioni array - scalare o scalare array....................................................................24 3.3 Operazioni array - array ...................................................................................................25 4. Operatori relazionali e logici..................................................................................................26 4. Funzioni predefinite ...............................................................................................................28\nCapitolo 4 Operazioni di Input/Output.................................................................... 30\n1. Ottenere linput dallutente ....................................................................................................30 2. Visualizzare loutput in forma testuale ..................................................................................31 3. Visualizzare loutput in forma grafica ...................................................................................32\nCapitolo 5 Programmare in MatLab ....................................................................... 36\n1. I file in Matlab........................................................................................................................36 2. I file script ..............................................................................................................................38 3. I file funzione .........................................................................................................................39 4. Elementi di programmazione strutturata................................................................................40 4.1 Istruzioni condizionali......................................................................................................40 4.2 Istruzioni iterative ............................................................................................................42\nEsercizi..................................................................................................................... 44 Indice........................................................................................................................ 51\nStruttura dei dati dell'array\nDocumenti simili a Dispensa_Matlab\nGianfranco de Troia\nMichele Shin Abruzzese\nAltro di Matteo Isola\nAppunti Di Moto Vario a Superficie Libera\nd Cap 02 Concerto Gu\n31 Wf8500 Resonant Column i


Meteo, ondata di caldo al Sud: temperature fino a +31°C oggi in Sicilia, +28°C in Calabria (xohu)\nIn particolare, Calabria e Sicilia sono le due regioni più calde oggi, mercoledì 28 aprile 2021.\nPer quanto riguarda la Calabria, sono state registrate punte di +28°C nel Cosentino, dove le temperature sono state più alte rispetto al resto della regione.\nSull’isola, è stato sfondato il muro dei +30°C, con una temperatura massima di +31°C registrata a Caltagirone, nel Catanese.\nDi seguito, le temperature massime raggiunte oggi in alcune località di Calabria e Sicilia:\n28 Aprile 2021 19:48. (Stretto web)\nDAL PUNTO DI VISTA meteorologico weekend tra Sole e annuvolamenti di passaggio con il rischio di qualche fenomeno sabato su regioni tirreniche e Sicilia. Picchi di temperatura massima nella giornata di sabato 1 maggio. (3bmeteo)\nUlteriore calo poi ad inizio della prossima settimana con valori più vicini alle medie del periodo iogge e temporali al Nord dove (Valle d’Aosta a parte) vige la zona gialla e ondata di caldo africano al Sud dove (Campania esclusa) le regioni sono sottoposte alle restrizioni della zona arancione, col divieto di spostamento oltre il proprio comune di residenza. (Corriere della Calabria)\n29 Aprile 2021 21:04. Meteo, altra giornata di gran caldo in Sicilia e Calabria con temperature estive: i valori massimi di oggi. Oggi anche la Calabria ha raggiunto i +30°C, soprattutto nel Cosentino, ma temperature fino a +29°C sono state registrate anche nel Reggino. (Stretto web)\nMeteo domani giovedì 29 aprile: la giornata dovrebbe essere caratterizzata dal tempo instabile su Nord e Centro, calda invece al Sud. Decisamente migliore dovrebbe essere invece la giornata sulle aree del Sud del nostro Paese. (Leggilo.org)\nStesse temperature in Puglia, mentre in Sicilia ci saranno picchi di 33-34 gradi. Primo maggio con un'Italia divisa in due sul fronte meteo: da una parte l’anticiclone africano che interesserà il Sud e dall’altra la forte instabilità che caratterizzerà invece il Nord. (LaC news24)\n' e DOVE nei prossimi giorni - MAPPE Picco dell'anticiclone africano sabato 1 maggio con massime localmente superiori ai 30°C. Temperature massime lunedì. GIORNI SUCCESSIVI: restiamo su questi valori o leggermente superiori, in attesa di un possibile nuovo aumento nel weekend (3bmeteo)\n01/05/2021 - 03:18 - Domenica 2: qualche pioggia al Nord e Appennino, più soleggiato altrove. Lunedì 3: pochi disturbi in un contesto in prevalenza soleggiato Forte maltempo in arrivo al Nord…)


Ho scoperto il Pull Apart Bread al patè di olive nere lo scorso anno in Garfagnana. Lo aveva fatto per una lezione di pane Annarita Rossi del blog “Il bosco di alici”.\nL’ho amato subito, perché è divertente, pratico e buonissimo. Ma come al mio solito, non sono riuscita a rifarlo fino a Natale, perché vivo in una eterna rincorsa con le cose da fare.\nMa anche tra i miei familiari ha avuto tanto di quel successo che l’ho rifatto già molte volte. Quindi oggi per festeggiare la giornata del Pancarré e delle Fette Biscottate per il Calendario del Cibo Italiano, mi è sembrato l’ideale.\nIl pane già affettato\nGuardandolo sembra una cosa complicatissima, invece la lavorazione è molto facile e per dare questo effetto fisarmonica non servono attrezzature particolari: semplicemente si affetta prima della seconda lievitazione. Il nome inglese (pane separato, tagliato, affettato …) si deve alla preparazione di un pane dolce, tipo pan brioche composto da tante fette sovrapposte precedentemente farcite con una crema a base di burro, zucchero e cannella. Nella versione salata, non cambia molto, è sempre una base pan brioche spalmata con patè di olive.\nIl vantaggio enorme di questo pane è l’essere già affettato, quindi si porta in tavola intero e ognuno stacca la propria fetta, senza bisogno del coltello. In questo caso, ogni fetta è spalmata di paté di olive ed è gustosissimo come accompagnamento con i salumi, le verdure (specialmente la zucca), con il pesce, la carne, o anche da solo, perché è davvero buonissimo.\nE’ fantastico caldo, tiepido e freddo ed è molto facile da fare. Di solito non faccio pane in cassetta, ma per questo ho dovuto fare una eccezione, proprio per la sua bontà. Insomma non vi ho ancora convinto ad andare subito ad impastare?\nSe vi è piaciuto il Pull Apart Bread al patè di olive nere, provate anche quello dolce con le mele e la cannella, l’Apple Cinnamon Pull Apart Bread è ottimo per la colazione.\nIn un frullatore inserire le olive, l’olio ed il sale frullando ad intermittenza fino ad ottenere una crema. Si conserva in un barattolo di vetro con chiusura ermetica, coperto con un filo di olio di oliva, per 10-15 giorni.