Per far girare C su Xcode: "File " --> " Nuovo " --> "Progetto" Apparirà una finestra di dialogo . Selezionare "Applicazione" sotto il menu "Mac OS X" . Quindi selezionare l'opzione " Command Line utensili" nella finestra. Fare clic su " Avanti ", quindi selezionare un nome per il progetto nella finestra successiva . Fare clic su " Avanti" , e selezionare una posizione per il vostro progetto . Fare clic su " Crea" per creare il progetto . Tipi di variabili (da dichiarare, con ";"):
- caratteri:
- char,
- unsigned char
- interi con segno
- short (int) range: [-32768; 32767] (16 bit)
- int - Dimensione non fissa. Dipende dal compilatore
- long (int) range: [-2147483648; 2147483647] (32 bit)
- naturali (interi senza segno)
- unsigned short (int) range: [0; 65535] (16 bit)
- unsigned (int) - Dimensione non fissa. Dipende dal compilatore
- unsigned long (int) [0; 4294967295] (32 bit)
- reali
- float
- double
- boolean - si usano gli interi: • zero indica FALSO • ogni altro valore indica VERO; convenzione: suggerito utilizzare uno per VERO
Operatori di assegnamento compatti k += j equivale a k = k + j k *= a + b equivale a k = k * (a+b) Caratteri – singolo carattere racchiuso fra apici: 'A' 'C' '6' – caratteri speciali:
- newline n
- tab t
- backspace b
- form feed f
- carriage return r
- ''' '' '"'
Stringhe - sequenza di caratteri delimitata da doppio apice: "ciao" "Hellon"
In C le stringhe sono semplici sequenze di caratteri di cui l’ultimo, sempre presente in modo implicito, è '0' esempio: "ciao" = {'c', 'i', 'a', 'o', '0'}
Espressioni Una espressione è una notazione che denota un valore mediante un processo di valutazione. Esempio di espressioni elementari: costanti (‘A’ 23.4 -3 “ciao”) Input Output Per avere funzioni di input output occorre includere il file <stdio.h>,
che serve per eseguire la lettura da un dispositivo di input (es. tastiera) o scrittura su un dispositivo di output (es. video); le funzioni più usate sono scanf(), printf() e getchar(). Per includere si usa il seguente comando, che è una direttiva per il pre-processore. La direttiva "#...” viene eseguita, provocando delle modifiche testuali al programma sorgente. Nel caso di #include <nomefile> viene sostituita l’istruzione stessa con il contenuto del file specificato.
#include <stdio.h>
scanf(<stringa-formato>, <sequenza-variabili>) serve per leggere dallo stdin (generalmente la tastiera) una sequenza di caratteri (lettere o cifre) che verranno memorizzate all’interno di opportune variabili. Esempio:
double A,B,C; scanf(“%d:%d:%d”, &A, &B, &C); // richiede che i tre dati vengano immessi separati dal carattere “:” int scelta; scanf ("%i", &scelta);
printf(<stringa-formato>,<sequenza-elementi>) viene utilizzata per fornire in uscita il valore di una variabile o, più in generale, il risultato di una espressione. Stampa sullo stdout la lista di argomenti conformemente alla stringa di formato specificata. La funzione ritorna il numero di caratteri stampanti. Formati più comuni
- int %d
- float %f
- carattere singolo %c
- stringa di caratteri %s
la stringa di formato descrive esattamente quello che deve esserci in input; lo spazio bianco viene considerato un separatore e viene scartato. Però è a tutti gli effetti un carattere, quindi viene considerato nella digitazione. getchar legge un carattere per volta dalla tastiera;
#include <stdio.h>
main() {int
ch, i = 0;
while
((ch =
getchar
()) != EOF) i++;
printf
(
"%d n"
, i);
}
Mi sono imbattuta in un Raspberry Pi B che girava per casa, ho deciso di adottarlo. Installazione Raspbian e collegamento alla TV - quick start in inglese pdf Occorrente (oltre al Raspberry Pi): 1) una scheda SD da 8 GB - comprata a circa € 10. 2) una tastiera con uscita USB - ho cercato inutilmente per negozi un adattatore per convertire l'uscita PS2 di una vecchia tastiera che non utilizzavo (vedi quello a lato, che non vendono più nei magazzini Unieuro), ho fregato temporaneamente la tastiera del PC dell'amabilfrizzante. Già restituita, poiché questo primo collegamento con tastiera e TV è stato solo il primo approccio, adesso controllo il Raspberry da remoto con il Mac. 3) un mouse con uscita USB - trovato per casa casualmente, insieme al Raspberry. 4) un'alimentatore con uscita mini USB, 700mA - 5V; ho utilizzato quello del mio tablet Nexus 7 (che adesso carico con il carica dell'Iphone e un cavo USB - mini USB). 5) un cavo HDMI - trovato per casa. Serve per collegare il Rasperry allo schermo della TV (La mia è già dotata di presa HDMI). Preparazione della SD con NOOBS (acronimo di New Out Of the Box Software) 1) Formattare la SD card. Ho utilizzato SD Formatter, applicazione che si installa sul Mac in modo analogo a tutte le altre applicazioni. 2) Scaricare NOOBS, unzipparlo e copiarlo sulla SD. Collegamenti Collegare tastiera, mouse e monitor. Inserire la SD card. Importante: l'ultimo collegamento da fare è quello dell'alimentatore alla presa elettrica (non c'è il pulsante di accensione). Si consiglia di seguite la quick start guide per la sequenza delle connessioni. Ricordarsi di configurare la tv im modo che veda l'ingresso HDMI. Primo avvio e installazione Sistema Operativo Rasbpian Appena si collega il sistema, NOOBS si avvia e, dopo il boot, si visualizza sullo schermo una finestra di dialogo che chiede quale sistema operativo vogliamo installare. Raspbian è l'unico che si può installare senza che il sistema sia collegato a Internet, quindi ho installato questo. E' una versione di Debian ottimizzata per il Raspberry Pi. Raspbian si installa in pochi minuti. Quando l'installazione è completata, compare una finestra di configurazione. Si può scegliere di impostare la data e l'ora corretta, oltre ad altre configurazioni come quella della lingua e della tastiera. Uscire con Finish. Login seguente: user pi, password raspberry (poi sarà da cambiare). Digitare startx per l'interfaccia grafica.
cat - display a txt file cp [file origine] [file destinazione] - copia un file mv [file origine] [ destinazione] - muovi un file mkdir - crea una dir rmdir - elimina una dir vuota rm - elimina file clear - pulisce il terminale dalle scritte dei comandi precedenti ~ (alt+5 su mac) è la dir principale --> se da qualsiasi dir corrente si fa cd ~ si salta alla dir principale
. (punto) è la dir corrente, quindi se ad es vuoi muovere un file da un'altra dir a quella in cui ti trovi: mv [path file] .
.. (due punti) è la dir al ramo superiore quindi cd .. vai al ramo superiore
sudo apt-get install [applicazione] - per installare una applicazione da internet (sudo) è per poter fare comandi da superuser
nano è l'editor di file in linea
sudo shutdown -h now - per spegnere il computer a cui ci si è collegati (-h = halt)
sudo shutdown -r now - per spegnere e riaccendere il computer a cui ci si è collegati (-r = restart)
Appunti tratti dal webinar Tecniche di Machine Learning con Matlab - Francesca Perino http://it.mathworks.com/videos/machine-learning-with-matlab-98517.html
Il Machine Learning permette di costruire un modello predittivo partendo dall'utilizzo di un dataset di training. E' utile quando abbiamo molti dati, molte variabili, sistemi complessi che non possono essere descritti tramite semplici equazioni.
Si utilizza, ad esempio, per la sequenziazione del DNA, per identificare frodi in ambito finanziario, in sistemi di pattern recognition.
Gli algoritmi di Machine Learning hanno un approccio del tipo seguente:
- un dataset di training viene "passato" all'algoritmo
- l'algoritmo "mappa" una funzione di induzione "f"
- sulla funzione "f" vengono passati i dati di test
- Se l'algoritmo ha "imparato" correttamente, allora è in grado di generalizzare. I dati di test permettono di valutare la bontà dell'algoritmo.
Ottimo corso su EdX: https://courses.edx.org/courses/BerkeleyX/CS188x_1/1T2013/info
Ottimo libro: http://aima.cs.berkeley.edu/
Ottimo prof: http://www.cs.ubc.ca/~nando/
Tipi di algoritmi di Machine learning in MATLAB
Algoritmi non supervisionati: i dati sono raggruppati in base ad alcune caratteristiche e similarità che li rendono coerenti fra loro (algoritmi di clustering)
Algoritmi supervisionati: abbinano i dati di ingresso ai dati di output. Possono essere suddivisi in algoritmi di classificazione (informazioni di tipo classificativo/categorico) e algoritmi di regressione (numerici)
Dati esercizio matlab http://www.mathworks.com/matlabcentral/fileexchange/42744-machine-learning-with-matlab/content//Machine%20Learning/Clustering/html/Example_Clustering.html
Algoritmo di clustering (tipo unsupervised)
I gruppi possono essere separati o parzialmente sovrapposti (un dato può appartenere a più classi). Il processo è iterativo e si avvale del concetto di trial and error. Tipici algoritmi di clustering:
- K-Means http://it.mathworks.com/help/stats/kmeans.html
- Fuzzy C-Means http://it.mathworks.com/help/fuzzy/fcm.html
- Hierarchical http://it.mathworks.com/help/stats/fitgmdist.html
- Neural Networks
- Gaussian Mixture
- Hidden Markov Model.
Posterior: è una funzione che va a calcolare a posteriori la probabilità che appartenga a una o all'altra classe http://it.mathworks.com/help/stats/gmdistribution.posterior.html
(riprendere da 27 min il webinar)
https://www.youtube.com/watch?v=bEusrD8g-dM#t=122
Pagina 5 di 8