【发布时间】:2014-08-27 21:05:42
【问题描述】:
我已经对采样频率为 50 KHz 的逆变器的 50Hz 输出电流进行了 1 分钟的采样。我应该将时间划分为 200 毫秒包(主信号的 0.2 秒或 10 个周期)并对每个包进行 FFT。所以这意味着我在每个包中有 10000 个样本(如果不是我零填充或截断,那并没有太大的区别)。我还应该提取高达 9 KHz 的频谱。低频的结果还可以,但我的结果错误(这些值是高频的一半)。你能帮我理解我做错了什么吗?!
我有一个想法,也许像下面的代码这样的事情发生在我的 FFT 上。只需将 SF 更改为 10000,看看结果将如何更改!
in this code if you change the SF(sampling frequency) from 30000 to 10000,
the results for high frequncies will be distorted and disordered . why ?
SF = 30000; %sampling frequency
% signal
t = 0:1/SF:1-1/SF; % sample points
wave=15*sin(2*pi*1*t)+1*sin(2*pi*123*t)+2*sin(2*pi*203*t)+3*sin(2*pi*223*t)+4*sin(2*pi*331*t)+5*sin(2*pi*2812*t)+6*sin(2*pi*5752*t)+7*sin(2*pi*7993*t);
wavefft = fft(wave);
L=floor(size(wave,2)/2)+1; % removing the mirror side of spectrum
MagSpec = abs(wavefft(1:L))/(SF/2); %% removing the mirror side of the spectrum
and ranging the domain
plot(MagSpec);
【问题讨论】:
-
您是否正在对包进行窗口化? FFT 假定周期性,因此您应该在 FFT 之前应用窗口,否则您将获得额外的高频分量。
-
可能是您做错了什么,因为您没有使用大小为 n^2 的样本窗口,并且在此过程中您得到了错误的结果。一次尝试 16384 或 8912 个样本...
-
保罗,我认为窗口化没有问题,我不允许根据我的工作的含义窗口化我的数据!
-
Daniel,如果我使用 8912 或 16384 个样本数量,那么我的包将不再是 200 毫秒,并且更多的 matlab 在我的样本之间进行插值以达到 2 的下一个幂!
标签: matlab signal-processing fft