필터 지우기
필터 지우기

Get spectrum from autocorrelation function using fft()

조회 수: 18 (최근 30일)
Ivan Volodin
Ivan Volodin 2017년 3월 22일
편집: Ivan Volodin 2017년 3월 22일
Hello!
I would like to observe Fourier Spectrum, got through Autocorrelation function. This is my code:
clear;clc;
%%generate x-axe
first_step=0;
step_t=0.01;
last_step=1;
t=first_step:step_t:last_step;
%%signal and fourier transform
y= 2*sin(2*pi*60*t) ;
figure(1)
plot(t,y);title('signal')
fourier=fft(y );
N_=length(fourier);
f_ = (1 / step_t) * ( 0: (N_/2) ) / N_;
a=(fourier.*conj(fourier))/(N_*N_); % Spectral Density get half
a = a(1:N_ /2+1);
a(2:end-1) = 4*a(2:end-1);
figure(2);
plot(f_,a);title('Spectrum Power through signal');
%%through AutoCorrelation function
tau=0.01;
y1= 2*sin(2*pi*60*(t+tau)) ;
Y=y1.*y;
AutoCorr_func = cumtrapz(Y,t);
figure(3);
plot(t,AutoCorr_func); title('AutoCorrelation function');
fourier=fft(AutoCorr_func);
N_=length(fourier);
f_ = (1 / step_t) * ( 0: (N_/2) ) / N_;
a=fourier.*conj(fourier) ; % Spectral Density
a = a(1:N_ /2+1); % spectrum is even, so get half
a(2:end-1) = a(2:end-1); % multiply by 4, since spectrum is square of amplitude, and we have two even halves
figure(4)
plot(f_ ,a );
title('Spectrum through AutoCorrelation funciton');
and I get this
so a few questions:
1) why I get so strang ACF? It has to be periodic, since y and y1 are strongly periodic. Is sonething wrong with it? maybe here
Y=y1.*y;
AutoCorr_func = cumtrapz(Y,t);
but Acf is an integral and I am trying to get an array numerically.
2) My tries to get power density through Acf are the same as in the simple case, without using Acf, but Figure 2 gives correct resultL frequency = 42 and power is square of amplitude, in my case it should be 4, but I have around 2. What is the problem...?
3) How to get correct power density through Acf, what am I doing wrong?
Any help would be greatly appreciate! Thank you in advance!

답변 (0개)

카테고리

Help CenterFile Exchange에서 Spectral Measurements에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by