2013-02-13 68 views
0

通过使用小波工具箱,可以分解和重构时间序列,matlab中的小波分解和重构

load leleccum; 
s = leleccum(1:3920); 

% decomposition 
[c,l] = wavedec(s,3,'db5'); 

% Reconstruction 
a0 = waverec(c,l,'db5'); 

由此可知,如何从系列中去除特定的频率?例如,一旦我将系列分解为其频率分量,我如何在重建之前从其中删除诸如每日周期的频率?

t = 1:365; 
raw = 20+(10-2).*rand(1,length(t)); 
signal_1 = 10*sin(2*pi*t/24); 

y = raw + signal_1; % example data series 

% decomposition 
[c,l] = wavedec(y,3,'db5'); 

你如何与24即“signal_1”的从最后系列的周期去除信号:信号与24单位周期的

实施例?

回答

1

你需要修改你从wavedec得到的载体cl。如果你想删除某些频率,找到对应于这些频率的数据并将其归零。然后致电waverec重建修改后的时间序列。

+0

感谢您的回复。虽然我理解去除某些频率然后重构阵列的概念,但是当我使用其他包获取小波系数时,它会返回一个矩阵,显示每个频率如何随时间变化。所以我有点困惑,为什么这个命令返回一个向量,即没有显示相似频率在时间上是如何变化的,从'c'我把它看作是显示组成该系列的所有频率,其中没有频率重复。我误解了它的用法吗? – Emma 2013-02-13 14:45:17

+0

查看[wavedec文档](http://www.mathworks.com/help/wavelet/ref/wavedec.html),了解“c”和“l”向量。 – shoelzer 2013-02-13 14:48:44

+0

我已阅读文档,但我仍然不确定小波分解矢量'c',我在原始文章中添加了一个示例代码,您能否告诉我这个示例应该如何删除指定的频率重建。 – Emma 2013-02-14 08:24:07