我采样频率为50 KHz的逆变器的50Hz输出电流1分钟。我应该将时间分为200ms封装(主信号的0.2s或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);
答案 0 :(得分:4)
您所观察的是aliasing。
通过使用50kHz的采样率比较结果,您可以看到
以及使用10kHz 的采样率
正弦信号的频率低于10kHz采样率的一半(Nyquist frequency),即1Hz,123Hz,203Hz,223Hz,331Hz和2812Hz的正弦波不受影响。 5752Hz和7993Hz的波特率分别为4248Hz和2007Hz。
您仍然可以在200ms或10000个样本上执行FFT,但采样率在50kHz时保持不变。那就是你会:
SF = 50000; %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);
用于生成信号,但是您可以将结果波形信号分成块进行处理:
for i=1:floor(length(wave)/10000)
wavefft = fft(wave(1+(i-1)*10000:i*10000))
% do somthing with the wavefft result
end