【发布时间】:2017-03-06 08:25:24
【问题描述】:
假设一个信号对应于一年(365 天)的天数。它由所有零组成,除了一些稀疏值对应于由相同间隔(30 天)分隔的孤立峰。我用快速傅里叶变换函数获得了频谱。
如何摆脱高 0Hz 峰值? 编辑:这与信号的非零均值性质有关。有关详细信息,请参阅this post。
然后第一个峰值出现在 12Hz,这是意料之中的。然而,峰值也出现在 24Hz、36Hz、48Hz ... 。是混叠问题吗?如何摆脱它?
下面是我的代码。它在 Octave 中进行了测试,但它也应该在 Matlab 中工作
close all
clear all
T = 1/365; % period
samp_freq = 1/T; % sample frequency
t=0:T:2; % overall time span is two years
% build signal
x= zeros(length(t),1);
for i=1:length(t)
if mod(i,30) == 0
x(i) = 100;
else
x(i) = 0;
end
end
figure(1)
plot(t,x)
grid
xlabel("Time [years]")
ylabel("Signal amplitude")
y=fft(x);
N = length(x);
for i=1:N
f(i) = (i-1)*samp_freq/N;
end
figure(2)
plot(f,abs(y))
xlabel("Frequency")
ylabel("Signal amplitude")
figure(3)
plot(f(1:80),abs(y(1:80)))
xlabel("Frequency")
ylabel("Signal amplitude")
【问题讨论】:
-
为你的问题的良好结构加 1
-
这能回答你的问题吗? power spectrum by numpy.fft.fft