[MATLAB] DFT

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto UtenteDrCox
2.738 2 8 12
Master EY
Master EY
Messaggi: 744
Iscritto il: 8 giu 2010, 21:42
0
voti

[1] [MATLAB] DFT

Messaggioda Foto UtenteDrCox » 15 giu 2010, 17:44

Devo calcolare la DFT di segnali definiti su Z(T) e disegnare il grafico del modulo. Posto F=1/T=8 kHz

- trasformata su N=512 punti di x(nT)=1 ,per 0 \leq n \leq 63 e 0 altrove

- trasformata su N=256 punti di x(nT)=0.5*sin(2*pi*n/256*9)+0.7*sin(2*pi*n/256*100) con 0 \leq n \leq 255

- trasformata su N=256 punti di x(nT)=0.5*sin(2*pi*n/256*100/3)+0.7*sin(2*pi*n/256*200/3) con 0 \leq n \leq 255




così è come ho fatto io:

Codice: Seleziona tutto

1)

T=1/8000;
N=512;
x=ones(1,64);
X=T*fft(x,N);
f=(0:N-1)/(N*T);
stem(f,abs(X))



2)

T=1/8000;
N=256;
n=(0:255);
x=0.5*sin(2*pi*n*9/256)+0.7*sin(2*pi*n*100/256);
X=T*fft(x,N);
f=(0:N-1)/(N*T);
stem(f,abs(X))


3)

T=1/8000;
N=256;
n=(0:255);
x=0.5*sin(2*pi*n*100/(256*3))+0.7*sin(2*pi*n*200/(256*3));
X=T*fft(x,N);
f=(0:N-1)/(N*T);
stem(f,abs(X))





ma i risultati grafici che ottengo non mi convincono troppo.
Volevo dunque chiedere:
sbaglio da qualche parte? Se si, dove?
E se non sbaglio.. perché i grafici sono proprio così?
"The past is not really the past until it has been registered. Or put another way, the past has no meaning or existence unless it exists as a record in the present."
John Archibald Wheeler

Avatar utente
Foto UtenteEdmondDantes
11,9k 8 11 13
Disattivato su sua richiesta
Messaggi: 3619
Iscritto il: 25 lug 2009, 22:18
Località: Marsiglia
Contatta:
0
voti

[2] Re: [MATLAB] DFT

Messaggioda Foto UtenteEdmondDantes » 16 giu 2010, 20:33

Sicuramente sei più esperto di me. E ti faccio alcune domande.
perché moltiplichi i punti della DFT per T?
perché normalizzi gli istanti f (immagino che sia la K che si trova su qualsiasi testo di elaborazione numerica dei segnali) per N*T?

Ovviamente non mi sogno di fare i conti a mano (256 punti sono tanti :mrgreen: ).
Ho calcolato solo il primo punto della prima trasformata (molto semplice :mrgreen: :mrgreen: ) X(0)=64.
Ti risulta dal calcolo (con Matlab)?

Secondo me (senza troppe pretese) T non serve. Il segnale è già campionato, quindi x(nT)==>x(n).

Domande toste, soprattutto quella del campionamento e filtraggio di una immagine.
Cosa studi informatica? Ingegneria Informatica?
Il Conte di Montecristo

Se non studio un giorno, me ne accorgo io. Se non studio due giorni, se ne accorge il pubblico.

Io devo studiare sodo e preparare me stesso perché prima o poi verrà il mio momento.
Abraham Lincoln

Avatar utente
Foto UtenteDrCox
2.738 2 8 12
Master EY
Master EY
Messaggi: 744
Iscritto il: 8 giu 2010, 21:42
0
voti

[3] Re: [MATLAB] DFT

Messaggioda Foto UtenteDrCox » 18 giu 2010, 9:23

infatti nell'origine mi ritrovo con un valore pari a zero, e sicuramente è sbagliato..
inoltre, mi ritrovo (nel secondo es, tanto x prenderne uno) con soli quattro punti diversi da zero, di valore addirittura inferiore a 0.1.
Rimuovendo i T, come da te suggerito, mi salta effettivamente fuori un fattore 64, ma non proprio nell'origine ma poco dopo (ma questo penso sia comunque corretto, per il ritardo presumo)
Il fattore T l'avevo inserito perché diciamo mi ero basato sullo stampo di un altro esercizio fatto dal prof, in cui l'aveva inserito e, appunto, non avevo nemmeno capito perché :mrgreen:

Comunque, a livello qualitativo risulta corretto ritrovarsi con soli 4 punti diversi da zero, valenti 64, 90, 90 e 64 (circa), simmetrici rispetto a 0.5 (tra 0 e 1)?


p.s. comunque studio ingegneria elettronica
"The past is not really the past until it has been registered. Or put another way, the past has no meaning or existence unless it exists as a record in the present."
John Archibald Wheeler

Avatar utente
Foto UtenteEdmondDantes
11,9k 8 11 13
Disattivato su sua richiesta
Messaggi: 3619
Iscritto il: 25 lug 2009, 22:18
Località: Marsiglia
Contatta:
0
voti

[4] Re: [MATLAB] DFT

Messaggioda Foto UtenteEdmondDantes » 18 giu 2010, 15:54

La DFT viene utilizzata in svariati campi. Innumerevoli... dovresti farti spiegare dal tuo professore perché ha utilizzato il fattore T.
DrCox ha scritto:Il fattore T l'avevo inserito perché diciamo mi ero basato sullo stampo di un altro esercizio fatto dal prof

Magari in quell'esercizio era necessario utilizzarlo. Qui, a mio modestissimo parere, non ha senso usarlo.
Ho calcolato la DFT di alcune sequenze "a mano" e poi le ho verificate in laboratorio con Matlab. Non ho usato alcun fattore premoltiplicativo.
Allo stesso modo con le convoluzione lineari tramite DFT.

DrCox ha scritto:Comunque, a livello qualitativo risulta corretto ritrovarsi con soli 4 punti diversi da zero, valenti 64, 90, 90 e 64 (circa), simmetrici rispetto a 0.5 (tra 0 e 1)?


Forse è il caldo e sono confuso. L'indice k è intero, quindi come fai ad avere punti in 0,5?
Il Conte di Montecristo

Se non studio un giorno, me ne accorgo io. Se non studio due giorni, se ne accorge il pubblico.

Io devo studiare sodo e preparare me stesso perché prima o poi verrà il mio momento.
Abraham Lincoln

Avatar utente
Foto UtenteDrCox
2.738 2 8 12
Master EY
Master EY
Messaggi: 744
Iscritto il: 8 giu 2010, 21:42
0
voti

[5] Re: [MATLAB] DFT

Messaggioda Foto UtenteDrCox » 21 giu 2010, 23:33

beh, per via della normalizzazione mi ritrovo i risultati nell'intervallo [0,1]...
comunque credo che nei prossimi giorni, appena trovo un po' di tempo, ricontrollerò gli esercizi seguendo i suggerimenti ricevuti.
Grazie per l'aiuto, se non combino tornerò a scrivere :P
"The past is not really the past until it has been registered. Or put another way, the past has no meaning or existence unless it exists as a record in the present."
John Archibald Wheeler


Torna a “Programmi applicativi: simulatori, CAD ed altro”