Newsgroup: it.hobby.elettronica.digitale
Titolo: Interpolazione (Senx)/x......

Un saluto a tutti :)))
Prima di tutto grazie a tutti quelli che mi hanno risposto alla precedente
domanda che avevo fatto su VB, adesso riesco a leggere e scrivere sui
registri della mia schedina collegata sulla EPP (leggo a 6Ksample/S no 600
come avevo detto nel precedente post, ma penso che in questo caso il limte
sia l'A/D, un 0804)
Adesso mi trovo con il fatto di interpolare i valori che mi butta fuori
l'AD, per adesso uso un'interpolazione lineare, unendo con una linea i vari
punti, so che gli oscilloscopi digitali usano un tipo di interpolazione
chamato senx/x, ma non sono riuscito a trovare nulla di interessante in
rete, so che si parla di filtri FIR (finite impulse response), ma è una cosa
abbastanza semplice implementare un SUB in VB che mi faccia una
interpolazione decente sui miei capioni o no????
La mia idea era:
-Considero i campioni come impulsi
-Trasformo la mia funzione f(t) da t0 a t4096 (i valori che acquisisco la
LPT e rileggo dall'array) in f(w) [omega]
-Moltiplico f(w)*G(s) dove G(s) è un passa basso [questo lo so fare]
-Ritrasformo in f(t)
Domande:
-1- Come faccio a trasformare f(t) in f(w)??? Ok, teoricamente le formule le
so, ma come le aplico su un vettore???
-2- ...e se riuscissi [non so come] partendo da G(s) ad arrivare ad una G(t)
e componendola (com che operazione?) con al f(t) è possibile????
Grazie a tutti :)))))
Accetto qualsiasi consiglio Grazie 100000000 :))
bisc...@libero.it

 e componendola (com che operazione?) con al f(t) è possibile????
Il prodotto nel dominio della frequenza diventa una convoluzione nel
dominio del tempo. Oppure puoi realizzare direttamente il filtro FIR nel
dominio del tempo.
In realta` quello che vuoi fare (come hai detto in precedenza) e` una
interpolazione, quindi vuoi aggiungere campioni fra quelli che misuri. 
Puoi farlo in questo modo: aggiungi dei campioni di valore zero fra i
campioni che misuri, in questo modo "aumenti" il numero dei campioni (ad
esempio 4x, 8x... o qualunque altro valore intero). Poi, con un filtro FIR
che realizzi il sin(x)/x filtri la sequenza con gli zeri aggiunti e hai la
sequenza interpolata (con piu` punti). Il FIR fino a 64 coefficienti e`
piu` veloce da implementare in forma diretta, oltre i 64 e` piu`
conveniente passare per la fft.
Occhio che in questo campo sei sul "confine" fra il mondo di omega e quello
di z. Puoi decidere di fare una interpolazione come quella che ho appena
descritto, e sei in z: il numero di campioni ottieni alla fine dipende da
quanti zeri aggiungi. Oppure puoi pensare nel dominio tempo/frequenza e
quindi puoi ottenere in uscita la tua forma interpolata su qualunque punto
ti interessi. Per fare questo devi calcolare la somma di tanti sin(x)/x
pesati a seconda del valore dei vari campioni. Quest'ultimo modo richiede
piu` conti perche' devi poter valutare sin(x)/x in qualunque punto.
Se guardi il libro in rete che ti o indicato prima, dovresti trovare la
spiegazione di come fare.
Franco
PS: e` un casino :-)


 -Ritrasformo in f(t)
Perche` non resti nel dominio del tempo? Puoi ricostruire il segnale
originale usando un codificatore AMI che come impulso p(t) usi appunto
sen(x)/x:
f(t) = (sommatoria per k da -inf a +inf) Ck*p(t-kTs)
Ck e` la sequenza campionata, p(t) e` sen(x)/x, Ts e` il tempo di
campionamento.
Questo piu` o meno a braccio, ormai Comunicazioni Elettriche e`
piuttosto lontano nella mia memoria e cio` che dico potrebbe anche
essere stupidamente errato. :)
Il vero problema e` che 'x' non e` esattamente 't', si deve moltiplicare
per una qualche costante che non ricordo per adattarlo a Ts. Se ti
interessa questa strada, riprendo fuori gli appunti e ti so dire meglio.
:)
---
Bye! Lorenzo Lutti
http://www.geocities.com/SiliconValley/Peaks/6258/

 Franco
Come sempre, una spiegazione molto precisa, grazie :)))
X adesso visto che devo rivedere l0amp op di in gresso cambierò l'AD, fino
a che il collo di ottiglia sia leggere i dati dalla parallela (600Ks/s)....
e intanto mi vado a vedere il link che mi hai dato :)))
Ciao
bisc...@libero.it

 interpolazione chamato senx/x,

 alle potenze di 2 che ti tiri sempre dietro per altre strade.
Sai x caso dove posso trovare qualcosa in rete??? Magari basterebbe
implementare un filtro passa basso nel dominio del tempo, e farci passare i
dati dell'array..... be in ferie ci penserò :)))
Ciao :)))
bisc...@libero.it