使用IFFT获得原始信号和Parseval定理

时间:2017-06-27 09:23:25

标签: matlab signal-processing fft ifft spectral-density

我有一个当前信号(在csv中提取),这是我在30ns时间内从节奏模拟中获得的。我已经在FFT之前删除了DC偏移和应用的窗口函数。并通过sqrt(N)归一化FFT。我已使用fftshift(X)将零频率分量移到我想要的频谱的中心。我得到了我想要的FFT。我还希望通过ifft回到我原来的窗口信号,但它没有显示我的窗口信号,而是只显示我使用的窗口函数的一个版本。我的样本信号真实并不复杂。

我有另一个问题。我在FFT之前和FFT之后的功率是相同的。如何以智能的方式在图表中显示Parseval的theroem?

FFT and IFFT

我还添加了我的MATLAB代码而没有上传csv并制作向量。我的y值为Current_wo_dc

MATLAB代码:

N = length(Current_wo_dc);
ts = 1.0e-12;
Fs = 1/ts;
tmax = (N-1)*ts;
tm = 0:ts:tmax;
f = -Fs/2:Fs/(N-1):Fs/2;

fn=hanning(N);  % hanning window function
Z = Current_wo_dc'.*fn; 

Power_Z = sum(Z.^2); % power in time domain

%FFT
fftY = fft(Z);
y = fftshift(fftY);
Y = abs(y);
a3 = Y/sqrt(N);

Power_fftY = sum(fftY.*conj(fftY))/length(fftY); % power in frequency domain

%IFFT:
I = ifftshift(fftshift(Z));
II = I*sqrt(N);

%PSD
psd = a3.^2;
psd_db = 10*log10(psd);

subplot(311), plot(Z); % windowed signal
subplot(312), plot(a3); % fft across frequency bin not shifted along frequency
subplot(313), plot(II); % ifft 

0 个答案:

没有答案