/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
berpox 610
creamygirl 610
3773 570
10  jomfruane 570
Fase af FFT af tilfældig autokorrelation =~
Fra : Jack


Dato : 03-03-06 17:03

Hej

Hvordan kan det være at følgende kode giver samme output
ved tilfældigt input?

signal_input=randn(1,100);
auto_korrelation=xcorr(signal_input);
fase_output=angle(fft(auto_korrelation));




 
 
Carsten Svaneborg (03-03-2006)
Kommentar
Fra : Carsten Svaneborg


Dato : 03-03-06 19:50

Jack wrote:
> auto_korrelation=xcorr(signal_input);

Autokorrelationen er C(delta)=< X[i]*X[i+delta]>.
Dvs. C(0)=<X^2> og C(delta)=0 for delta > 0.

Du kan også tage dette som definition af at være
tilfældig. Så du får samme autokorrelationsfunktion
hver gang, så længe du tager gennemsnit over nok
tilfældige tal.

--
Mvh. Carsten Svaneborg
http://gauss.ffii.org

Jack (03-03-2006)
Kommentar
Fra : Jack


Dato : 03-03-06 20:50

>
> Du kan også tage dette som definition af at være
> tilfældig. Så du får samme autokorrelationsfunktion
> hver gang, så længe du tager gennemsnit over nok
> tilfældige tal.

Jeg tror du misforstår mig....eller så forstår jeg bare ikke
det du skriver...

Prøv at køre dette loop i MATLAB og forklar hvorfor
fasen af en fft af to tilfældige, uens autokorrelationer
er den samme....Jeg kan ikke lige gennemskue hvorfor
og jeg har arbejdet på at finde en forklaring i et par
dage nu.....


clc
close all
clear

N=40;
for k=1:1000
x=randn(1,N);
rxx=xcorr(x);
fase=angle(fft(rxx));
subplot(1,2,1)
plot(rxx)
ylim([-20 100]);
subplot(1,2,2)
plot(fase)
drawnow;
t=['Tryk på en tast ' num2str(k)];
title(t)
pause()
end






Jack (03-03-2006)
Kommentar
Fra : Jack


Dato : 03-03-06 22:56

ok jeg har vist dummet mig....input signalets indhold har selvfølgelig ingen
betydning for fasen af en fft....det er kun antallet af punkter der er
afgørende...
dumme mig...



Jesper Toft (08-03-2006)
Kommentar
Fra : Jesper Toft


Dato : 08-03-06 00:52

Jack wrote:

> ok jeg har vist dummet mig....input signalets indhold har selvfølgelig
> ingen betydning for fasen af en fft....det er kun antallet af punkter der
> er afgørende...
> dumme mig...

Hov Hov, stop lige lidt...
Det er da vist ikke rigtigt.
Input af en FFT har stor betydning for fasen.

Lad os lige regne lidt..

Grunden til at du har samme fase uanset dit input skyldes udelukkende dit
input signals udseende.
En autocoorlation har den enskab at den har et ulige antal samples i dens
output.. Dernæst er den symetrisk omkring midten.

DFT(x(k)) = sum 0->N-1 ( x(n) exp( -j * 2 * pi * k * n / N ) )

På grund af x(n)s opbygning, kan midten skrives for sig selv (ganget en
vinkel) og de 2 sider skrives som en sum af hver sample i den ene halvside
halvside gange summen af 2 vinkler.

DFT(x(k)) =
x((N-1)/2) * exp( -j * 2 * pi * k * (N-1)/2 / N ) +
sum 0->(N-3)/2 (
x(n) * (
exp( -j * 2 * pi * k * n / N ) + exp( -j * 2 * pi * k * (N-n-1) / N )
) )

Det sidste af de 2 vinkel bidrag (der er opstået på grund af den sidste del
af x(n)) kan skrives som:
exp( -j*2*pi*k*(N-1)/N + j*2*pi*k*n/N )
Hvilket giver:
exp( j*2*pi*k*n/N ) * exp( -j*2*pi*k*(N-1)/N )
Sammensat med det andet fase led giver det:
exp( -j*2*pi*k*(N-1)/N/2 ) * (
exp( -j*2*pi*k*n/N ) * exp( -j*2*pi*k*(N-1)/N/2 ) +
exp( j*2*pi*k*n/N ) * exp( +j*2*pi*k*(N-1)/N/2 )
)
Hvilket med euler giver:
exp( -j*2*pi*k*(N-1)/N/2 ) * cos( 2*pi*k*n/N + 2*pi*k*(N-1)/N/2)

Vinklen kan derved sættes uden for summen der herefter er reel (der er kun
x(n)*cos() tilbage).
Sammenligner vi den vinkel med den der står udenfor summen allerede, vil vi
se at de faktisk er ens..
Derved har vi summen af 2 tal med samme vinkel.. Det vil sige der er kun en
enkelt vinkel der ikke er afhængig af input data..

Du ender dermed med et resultat at din vinkel for din FFT for lige præcist
det input du har valgt er:
angle(exp( -j * 2 * pi * k * (N-1)/2 / N ))

Eller:
pi * k * (N-1) / N

Håber det gav mening..

--
/Jesper


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste