>
> 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')