Go Down

Topic: Arduino FFT e SVM (Fast Fourier Transform e Support Vector Machine) (Read 534 times) previous topic - next topic

UVreactive

Cerco qualcuno che conosca le macchine a vettori di supporto perché sto imparando la teoria, ma non saprei proprio come utilizzare le librerie con arduino e farle lavorare insieme, essendo algoritmi molto complessi per le mie conoscenze attuali.
Sono alle prese con un progetto molto impegnativo, ho cercato in lungo e in largo su internet, ma ho trovato ben poco.
Non vorrei incappare nella sindrome di gundam, sono consapevole di avere solo le basi di programmazione (C++) ma mi piace espandere le mie conoscenze e odio fermarmi alla teoria.

In poche parole dovrei creare un'interfaccia grafica che comunichi con arduino, tramite seriale, dove il microcontrollore riceve da n sensori, n segnali analogici variabili nel tempo (disturbati tra loro), da visualizzare sotto forma di onde sinusoidali e poi con SVM separare o meglio classificare con una discreta precisione n ingressi ed identificarli per far inviare alla scheda comandi digitali PWM.
 
Scusatemi se forse non sono stato chiaro, ma sarebbe una perdita di tempo spiegare tutto nei minimi dettagli e non trovare nessuno che conosca suddette librerie.

Attendo risposte, saluti.


gpb01

... evidentemente nessuno conosce quelle librerie. ::)

Guglielmo
Search is Your friend ... or I am Your enemy !

UVreactive

Esiste un classificatore lineare che potrei utilizzare con arduino?

tazzo

Arduino leggi i dati dai sensori, la SVM la implementi sul PC.

Poi chiaro che assumo che sai quello che stai facendo, che hai già verificato se Arduino va bene per leggere i sensori e comunicare i dati al pc, etc..

UVreactive

Arduino leggi i dati dai sensori, la SVM la implementi sul PC.

Poi chiaro che assumo che sai quello che stai facendo, che hai già verificato se Arduino va bene per leggere i sensori e comunicare i dati al pc, etc..
Grazie per la risposta.
A quanto ho capito le opzioni sono due, o implemento SVM direttamente nel programma di arduino o creo un programma esterno, ma quest'ultima la escludo perchè non ne sarei capace.
Sì arduino è idoneo, ma il problema è appunto applicare SVM ai dati letti dai sensori che devono essere processati prima con fourier.

Qui: https://github.com/radzilu/Arduino-SVM ci sono degli esempli per chi fosse interessato al progetto.

astrobeed

Sì arduino è idoneo
Ma assolutamente no, al limite con Arduino acquisisci i dati da dei sensori, FFT e SVM le fai sul pc, Arduino non ha ne la potenza di calcolo, ne la memoria, per poterle fare.
Con Arduino al massimo riesci a fare solo una semplice fft, su poche frequenze con grossi limite di banda, ad uso audio per implementare un rudimentale analizzatore di spettro ad uso puramente coreografico, comunque non certo programmando tramite wiring, va fatto in C puro.
L'esempio che hai linkato è un programma per processing (= Java) che implementa la SVM, in allegato ci sono alcuni sketch per Arduino che simulano i set dati, nulla di più.
Basta leggere la descrizione del programma:

Code: [Select]
Arduino-SVM is a Processing sketch which builds Arduino sketches from LibSVM
 (http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) models and scaling data.
They can be used in conjunction with LibSVM to classify newly measured data
 with a Arduino micro-controller-board.


La libreria LibSVM a cui fa riferimento è scritta in python e richiede gnuplot per visualizzare i dati, chiaramente pensata per l'uso sotto Linux.
Scientia potentia est

UVreactive

Ma assolutamente no, al limite con Arduino acquisisci i dati da dei sensori, FFT e SVM le fai sul pc, Arduino non ha ne la potenza di calcolo, ne la memoria, per poterle fare.
Con Arduino al massimo riesci a fare solo una semplice fft, su poche frequenze con grossi limite di banda, ad uso audio per implementare un rudimentale analizzatore di spettro ad uso puramente coreografico, comunque non certo programmando tramite wiring, va fatto in C puro.
L'esempio che hai linkato è un programma per processing (= Java) che implementa la SVM, in allegato ci sono alcuni sketch per Arduino che simulano i set dati, nulla di più.
Basta leggere la descrizione del programma:

Code: [Select]
Arduino-SVM is a Processing sketch which builds Arduino sketches from LibSVM
 (http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) models and scaling data.
They can be used in conjunction with LibSVM to classify newly measured data
 with a Arduino micro-controller-board.


La libreria LibSVM a cui fa riferimento è scritta in python e richiede gnuplot per visualizzare i dati, chiaramente pensata per l'uso sotto Linux.

Grazie per i chiarimenti.
Con "arduino è idoneo" mi riferivo alla lettura dei dati dai sensori, ma immaginavo anche di poter implementare SVM e FFT nel codice di arduino. Correggimi se sbaglio, quindi con arduino ricevo i dati dai sensori che poi devono essere processati da un programma a parte scritto in C nel quale applico la FFT ai dati e successivamente SVM, infine i dati classificati devono essere trasmessi di nuovo ad arduino per altre azioni.
Non è di sicuro una passeggiata, ma è fattibile? Non vorrei abbandonare questo progetto.

LibSVM a quanto ho capito può essere utilizzata anche per C: https://github.com/ccerhan/LibSVMsharp


Go Up