2013-02-13 6 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

+0

''wavedec에 대한 문서 '(http://www.mathworks.com/help/wavelet/ref/wavedec.html)를 보시면'c'와'l' 벡터에 대해 배울 수 있습니다. – shoelzer

+0

설명서를 읽었지만 웨이블릿 분해 벡터 'c'에 대한 확신이 없습니다. 원래 게시물에 예제 코드를 추가 했으므로이 예제를 통해 내가 언급 한 빈도를 이전에 제거해야하는 방법을 보여줄 수 있습니까? 재건. – Emma