Pagina 1 di 1

[MATLAB] DFT

Inviato: 15 giu 2010, 17:44
da DrCox
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ì?

Re: [MATLAB] DFT

Inviato: 16 giu 2010, 20:33
da EdmondDantes
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?

Re: [MATLAB] DFT

Inviato: 18 giu 2010, 9:23
da DrCox
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

Re: [MATLAB] DFT

Inviato: 18 giu 2010, 15:54
da EdmondDantes
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?

Re: [MATLAB] DFT

Inviato: 21 giu 2010, 23:33
da DrCox
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