Я получаю непонятные результаты при использовании функции matlab fft в одном из моих проектов и хотел бы понять, почему.
Я реализовал преобразование с четырьмя несущими (используя функцию Matlab FFT) на измеренной скорости , а затем интегрировал этот сигнал в частотной области (путем деления на * омега). Затем я возвращаю свой сигнал во временную область с помощью встроенной функции Matlab Ifft. Затем я дифференцирую сигнал во временной области (используя функцию сравнения), что означает, что я должен получить тот же сигнал, что и мой исходный сигнал скорости.
Я получаю ту же форму. Тем не менее, я не получаю те же значения ... Кто-нибудь знает, почему это так? Как я мог преодолеть эту проблему, чтобы восстановить свой исходный сигнал?
speed_spectrum = zeros(sampsize,length(x));
sampsize = double(sampsize);
window = hanning(sampsize); % hanning window
%Find size of file, delta T, sampling freq and delta F
deltat=1/sampfreq; %Seconds
deltaf=sampfreq/sampsize; %Hertz
%Creating frequency and time vectors
freq=0:deltaf:(sampsize-1)*deltaf;
time=0:deltat:(sampsize-1)*deltat;
Здесь я использую fft для моего сигнала скорости:
for z2 = 1:length(x) %Each matrix corresponds to measurement at point x(z2) along the beam
for z=1:navg
speed_spectrum(:,z2) = speed_spectrum(:,z2) + (fft(data(:,z2,z).*window))./navg;
end
end
Я интегрирую свой сигнал в частотной области:
for z2 = 2:length(omega)
position_spectrum(z2,:) = speed_spectrum(z2,:)/(1i * omega(z2));
end
Я применяю ifft, чтобы вернуть мой сигнал положения во временную область:
position_tdomain = ifft(position_spectrum(:,:));
Затем я дифференцирую сигнал положения, чтобы вернуться к моему сигналу скорости:
speed_tdomain = diff(position_tdomain);
Нормально видеть такие большие различия в форме окна из-за примененного окна ханнинга.
Но при увеличении вблизи центра (где окно ханнинга равно или близко к 1) мы можем наблюдать одну и ту же форму, но с разными амплитудами:
Это связано с интегрированием в частотной области, а затем с дифференциацией во временной области, или, скорее, с помощью функций fft и ifft?