首页 > 解决方案 > 使用内置 Matlab fft/ifft 函数和频域/时域积分/微分进行幅度变化

问题描述

在我的一个项目中使用 matlab fft 函数时,我得到了令人困惑的结果,并且想了解原因。

我已经在测量速度上实现了傅里叶变换(通过使用 matlab fft 函数) ,然后将该信号整合频域中(通过除以 i*omega)。然后,我使用内置的 matlab ifft 函数将信号带回时域。然后我在时域中区分信号(使用 diff 函数),这意味着我应该得到与原始速度信号相同的信号。

我确实得到了相同的形状。但是,我没有得到相同的值......有谁知道为什么会这样?我怎样才能克服这个问题来恢复我的原始信号?

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 函数?

标签: matlabintegrationfftfrequency-analysis

解决方案


推荐阅读