Fractal dimension from power density spectrum using FFT
조회 수: 6 (최근 30일)
이전 댓글 표시
I believe I am doing something wrong when computating of the power density spectrum using fft. See details of my problem below. Any hints welcomed. Thanks.
I need to compute the fractal dimension of a series. I want to use the slope of the power density spectrum to derive it. The slope of the spectrum on a log-log plot, -b, and the the fractal dimension, D, are related by D=(5-b)/2. I am computing the power density spectrum using FFT.
I am testing the approach on a serie of known fractal dimension D=1.1 (see attached csv file for the actual serie, and plot below)
I am computing the power spectrum as following:
x=myserieabsissavalue;
X=myseriesvalues;
figure; plot(x,X); % display the series
l=length(x);
xmax=max(x);
Fs=(l-1)/xmax; % sampling frequency
T=1/Fs; % sampling time interval
nfft=2^nextpow2(l);
Y = fft(X,nfft)/l;
f = Fs/2*linspace(0,1,nfft/2+1);
flo=log10(f); % log10 of the frequency
plo=log10((2*abs(Y(1:nfft/2+1))).^2)'; % log10 of the power. ^2 is there to convert from amplitude spectrum to power spectrum
ix=find(flo>=min(flo(2:end)) & flo<=min(flo(2:end))+(max(flo(2:end))-min(flo(2:end)))*0.83); % fit only a section of the spectra
fio = fit(flo(ix)',plo(ix)','poly1');
bfft = -fio.p1; % slope of the power density spectrum on log-log plot
Dfft=(5-bfft)/2; % estimated fractal dimension
I obtaining a slope of the spectrum of about -2 (b=2) and thus overestimate the fractal dimension (1.5 instead of 1.1). I will get a slope of the spectrum of about 2 for any series with fractal dimension <1.5.
I suspect I am doing something wrong when computing the power density spectrum. Any hints are welcomed.
댓글 수: 1
Mohammad
2014년 3월 30일
Dear Benoît Valley Have you found your solution? my question is the same as your question. Thanks Mohammad mhodaei@siu.edu
답변 (1개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!