/ 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
matlab problem : Effekttæthedsspektrum, au~
Fra : Joe


Dato : 21-02-05 13:26

Hej

I håb om at der sidder nogen kloge matlab-folk derude, får I lige den her
post.

Jeg har siddet og leget lidt med matlab for at udregne effekttæthedsspektret
på 2 måder, men de resulterende grafer
har forskellige peaks hvilket de ikke burde have.

Kan man ikke udregne skaleringsfaktoren på en eller anden måde?

Jeg takker på forhånd for hjælpen

Programmet ser sådan her ud:

close all
clc
clear


% Samplefrekvens
Fs=8000;
% Tidsakse
t=0:1/Fs:1;
% 100 Hz sinus signal
xn=sin(2*pi*100*t);
% Frekvensakse
f=[-0.5*Fs:Fs/1024:0.5*Fs-Fs/1024];

% Fourier-transformation af signal
Xg=fftshift(fft(xn,1024));

% Udregn PSD baseret på Xg
Sxx=abs(Xg).^2;
plot(f,Sxx)
title('PSD baseret på FFT af tidssignal')


% Autokorrelation for signal
rxx=xcorr(xn);

% Udregn PSD baseret på autokorrelation
Sxx2=abs(fftshift(fft(rxx,1024)));

% Plot
figure
plot(f, Sxx2)
title('PSD baseret på FFT af signalets autokorrelationsfunktion')




 
 
Dennis Jørgensen (21-02-2005)
Kommentar
Fra : Dennis Jørgensen


Dato : 21-02-05 15:15

"Joe" <JoeNOSPAM@yahoo.com> writes:

> Jeg har siddet og leget lidt med matlab for at udregne effekttæthedsspektret
> på 2 måder, men de resulterende grafer
> har forskellige peaks hvilket de ikke burde have.

Jeg skal ikke påstå at vide noget om signalanalyse, men jeg undrer mig
lidt over den (tilsyneladende) tilfældige måde du skærer ned fra 8001
punkter til 1024, specielt at du starter med at gøre det i det første
tilfælde, men først gør det efter en "mellemregning" i det andet.



Mvh.


Dennis Jørgensen

Joe (21-02-2005)
Kommentar
Fra : Joe


Dato : 21-02-05 15:27


>
> Jeg skal ikke påstå at vide noget om signalanalyse, men jeg undrer mig
> lidt over den (tilsyneladende) tilfældige måde du skærer ned fra 8001
> punkter til 1024, specielt at du starter med at gøre det i det første
> tilfælde, men først gør det efter en "mellemregning" i det andet.
>

Hejsa

Enig. Det var en fejl. Jeg har nu rettet koden. Jeg har også fundet
en skaleringsfaktor der medfører at de 2 grafer ser ens ud.

Her er ændringen:
Sxx=(length(xn)/Fs).*abs(Xg).^2;

Ved zoom på de 2 grafer er der dog stadigvæk forskel, selvom den
er mindre end før.

Så for at være på den sikre side, vil jeg høre om der er nogen derude
der kan bekræfte at beregningerne er korrekte??

Og i bekræftende fald om amplituderne evt. skal nedskaleres?

Takker

Her er den rettede kode:

close all
clc
clear


% Samplefrekvens
Fs=40000;
% Tidsakse
t=0:1/Fs:1;
% 100 Hz sinus signal
xn=sin(2*pi*2000*t);
N=2^ceil(log2(length(xn)))
% Frekvensakse
f=[-0.5*Fs:Fs/N:0.5*Fs-Fs/N];

% Fourier-transformation af signal
Xg=fftshift(fft(xn,N));

% Udregn PSD baseret på Xg
Sxx=(length(xn)/Fs).*abs(Xg).^2;
plot(f,Sxx)
title('PSD baseret på FFT af tidssignal')


% Autokorrelation for signal
rxx=xcorr(xn);

% Udregn PSD baseret på autokorrelation
Sxx2=abs(fftshift(fft(rxx,N)));

% Plot
figure
plot(f,Sxx2)
title('PSD baseret på FFT af signalets autokorrelationsfunktion')




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste