Arduino Forum

International => Italiano => Software => Topic started by: ale16289 on May 19, 2013, 04:48 pm

Title: accedere a posizione intermedie di un vettore
Post by: ale16289 on May 19, 2013, 04:48 pm
salve a tutti mi servirebbe sapere come accedere alle posizioni intermedie di un vettore di interi.
cioè se io dichiaro un vettore del tipo:
int reading[42];
poi riempo questo vettore e voglio accedere ai sui elementi contenuti ad esempio dalla posizione 10 alla 20 (tipo i due punti in matlab) come si puo fare?
grazie mille in anticipo
Title: Re: accedere a posizione intermedie di un vettore
Post by: astrobeed on May 19, 2013, 04:53 pm

poi riempo questo vettore e voglio accedere ai sui elementi contenuti ad esempio dalla posizione 10 alla 20 (tipo i due punti in matlab) come si puo fare?


Semplicemente puntando l'elemento, o gli elementi, che ti interessa, p.e. "reading[10]" oppure "reading[idx]" ove idx è una variabile che contiene il numero dell'elemento da puntare.
Title: Re: accedere a posizione intermedie di un vettore
Post by: ale16289 on May 19, 2013, 04:58 pm
forse non mi sono spiegato bene o non ho capito, io quello che voglio fare sarebbe una sorta di subString però la mia variabile non è del tipo String.
cioè io vorrei salvare in un sottovettore il contenuto di una parte di un vettore piu grande, in matlab
prova=zeros(1:100,1);
prova1=prova(2:30);
cosi in una riga di codice prova1 conterrà gli elementi dalla posizione due alla trenta di prova. Quello che vorrei sapere e come si fa in Arduino, possibilmente in una riga di codice.
Title: Re: accedere a posizione intermedie di un vettore
Post by: astrobeed on May 19, 2013, 05:12 pm

cosi in una riga di codice prova1 conterrà gli elementi dalla posizione due alla trenta di prova. Quello che vorrei sapere e come si fa in Arduino, possibilmente in una riga di codice.


Con una sola riga di codice, in C, non è possibile, devi fare un for tramite la quale leggi tutti gli elementi che ti servono e li poni un nuovo vettore.
Title: Re: accedere a posizione intermedie di un vettore
Post by: roby80 on May 19, 2013, 05:23 pm
Potresti usare le liste a puntatori ( non so se arduino li supporta)

http://www.dmi.unisa.it/people/tucci/www/lp1/lezione11.pdf
Title: Re: accedere a posizione intermedie di un vettore
Post by: roby80 on May 19, 2013, 05:27 pm
Lo svantaggio e di dover giocare con la memoria :/

Edit:
C'e già chi ha risolto il problema
http://forum.arduino.cc/index.php/topic,34161.0.html
Guarda qua, ci sta pure un esempio di substring
Title: Re: accedere a posizione intermedie di un vettore
Post by: astrobeed on May 19, 2013, 05:54 pm

http://forum.arduino.cc/index.php/topic,34161.0.html
Guarda qua, ci sta pure un esempio di substring


Primo non è applicabile ad un vettore composto da numeri interi, ogni elemento sono due byte, secondo per quale masochistico motivo si devono usare gli string su Arduino per trattare un vettore di numeri, ma anche di char ?
La questione posta nel topic si risolve con poche righe di codice, per giunta molto più efficiente di qualunque funzione di libreria per la manipolazione dei vettori, magari sotto forma di una funzione che poi viene richiamata quando serve passandogli il valore iniziale da cui iniziare contare e quanti elementi sono da prelevare.
Title: Re: accedere a posizione intermedie di un vettore
Post by: ale16289 on May 19, 2013, 06:25 pm
grazie a tutti...quindi per ricapitolare la cosa piu veloce sarebbe fare una funzione con un for che faccia quello che ho chiesto?
Title: Re: accedere a posizione intermedie di un vettore
Post by: nid69ita on May 19, 2013, 07:04 pm
Assolutamente si.   

Mathlab è un ambiente per la matematica, pensato per la gestione non di soli vettori ma di anche di matrici (matrice=vettore più semplice), mentre Arduino si programma in C e il target non è lo stesso.
Inoltre in Arduino lavori con una piccola MCU a 8 bit e con 2K di Ram sulla Uno.
Mathlab gira su PC con 2Gb almeno.     Piccole differenze che giustificano la differenza delle funzioni sviluppate.   :smiley-mr-green: