后从pwelch重建时间序列消除光谱的峰

2视图(30天)
我有时间序列数据,类似于以下几点:
t = 3650;%的天数在十年
t = 1: t;%向量生成时间
fs = 1;%采样频率(天)
= 2;%振幅
P = 365;%周期(天)、时间信号重演
f1 = 1 / P;%的周期每秒(即信号重复频率每秒)。
y = A * sin(2 *π* f1 * t);%的信号
y = awgn (y, 15日“测量”);
图(1);
次要情节(211);
情节(t, y)
%光谱数据
n = 1024;
Nfft = n;
[Pxx,频率]= pwelch (y,汉明(n), n / 2, Nfft, 1);
次要情节(212);
情节(log10(频率),频率。* abs (Pxx));
我有10年的数据的特点是强烈的季节性周期,这是明显的从数据使用pwelch也确认。接下来,我想重新生成的原始系列光谱但设置山峰等于一个平滑的背景模型的力量(我假设这将是一样的消除光谱的峰值和平滑和最近的点吗?),这将消除季节性周期从数据并返回剩余的时间序列。请注意,我这样做的原因是我最终会有一个更复杂的系列,将有更多的时间和我想删除它们。

答案(1)

布莱恩Neiswander
布莱恩Neiswander 2015年8月21日
你好理查德,
我建议使用一个带阻滤波器而不是手动删除光谱的峰值,然后重新创建时域信号。手动删除山峰可以产生奇怪的结果在处理测量数据时,由于内容带宽和谐波。
上面的示例数据,您可以使用“黄油”功能设计巴特沃斯带阻滤波器截止频率为0.8 - 1.2倍的季节性周期频率:
> > [b] =黄油(2 (0.8 - 1.2)* f1 / (fs / 2),“停止”);%二阶带阻滤波器
然后过滤数据使用“filtfilt”功能:
yf = filtfilt (b, a, y);
然后,您可以检查季节性周期一直在功率谱衰减:
> > [Pxxf Freqf] = pwelch (yf,汉明(n), n / 2, Nfft, 1);% psd过滤信号的估计
> >图;
> > semilogx(频率,频率。* abs (Pxx));
> >等;
> > semilogx (Freqf Freqf。* abs (Pxxf),“r”);
如果你有信号处理工具箱,您也可以尝试使用交互式“滤波器的设计和分析工具”来快速测试不同的过滤器:
> > fdatool
您可以按照下面的链接获取更多信息的“黄油”和“filtfilt”功能:
希望这个有帮助。
布莱恩

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!