У меня проблема с samll при преобразовании спектра в временной ряд. Я прочитал много статей песка Я htink Я применяю правильную процедуру, но я не получаю правильных результатов. Не могли бы вы найти ошибку?Временные ряды из спектра
У меня есть временная ряд, как:
Когда я вычислить спектр я: % число точек NPOINTS = длина (таймсерии);
%time interval
dt=time(2)-time(1);
%Fast Fourier transform
p=abs(fft(timeSeries))./(nPoints/2);
%power of positive frequencies
spectrum=p(1:(nPoints/2)).^2;
%frequency
dfFFT=1/tDur;
frequency=(1:nPoints)*dfFFT;
frequency=frequency(1:(nPoints)/2);
%plot spectrum
semilogy(frequency,spectrum); grid on;
xlabel('Frequency [Hz]');
ylabel('Power Spectrum [N*m]^2/[Hz]');
title('SPD load signal');
И я получаю:
Я думаю, что спектр хорошо вычислен. Однако теперь мне нужно вернуться назад и получить временные ряды из этого спектра и я:
df=frequency(2)-frequency(1);
ap = sqrt(2.*spectrum*df)';
%random number form -pi to pi
epsilon=-pi + 2*pi*rand(1,length(ap));
%transform to time series
randomSeries=length(time).*real(ifft(pad(ap.*exp(epsilon.*i.*2.*pi),length(time))));
%Add the mean value
randomSeries=randomSeries+mean(timeSeries);
Однако, сюжет выглядит следующим образом:
где это один порядок ниже чем оригинальная серия. Любые рекомендации?
Я понимаю вашу точку зрения. Но не могли бы вы поместить небольшой пример, чтобы показать, какой шаг я должен сделать для ifft. Можете ли вы использовать мой предыдущий код? – JPV