2013-05-13 8 views
0

변환의 NxN DWT 매트릭스 인 을 반환 할 수있는 Discrete Wavelet Transform (DWT) 용 C++ 라이브러리를 찾고 있습니다. 비슷한 질문이 여기 또한 NxN 웨이블릿 매트릭스를 반환하는 C/C++ 웨이블릿 라이브러리

Looking for a good C/C++ wavelet library for signal processing

을 열었하지만 난 당신이 볼 수있는 좀 더 구체적인 뭔가를 찾고 있었다.

라이브러리가 나를 독점 소프트웨어에서 사용 (LGPL, MPL, BSD 등) 사전에

감사를 할 수 있습니다 일부 비 GNU 라이센스하에 있다면 그것은 더 도움이 될 것

답변

0

이유 이유 이 행렬을 계산하지 않으면 DWT를 사용하여 계산하는 것이 매우 비효율적이라는 것입니다. FWT 방식은 훨씬 빠릅니다. 길이 (16)의 신호와 3 레벨 하르 들어

변환, I는 발견 MATLAB

>> h=[1 1]; 
>> g=[1 -1]; 
>> m1=[[ones(1,8) zeros(1,8); ... 
     zeros(1,8) ones(1,8); ... 
     1 1 1 1 -1 -1 -1 -1 zeros(1,8); ... 
     zeros(1,8) 1 1 1 1 -1 -1 -1 -1]/sqrt(8); ... 
     [1 1 -1 -1 zeros(1,12); ... 
     zeros(1,4) 1 1 -1 -1 zeros(1,8); ... 
     zeros(1,8) 1 1 -1 -1 zeros(1,4); ... 
     zeros(1,12) 1 1 -1 -1]/sqrt(4); ... 
     [g zeros(1,14); ... 
     zeros(1,2) g zeros(1,12); ... 
     zeros(1,4) g zeros(1,10); ... 
     zeros(1,6) g zeros(1,8); ... 
     zeros(1,8) g zeros(1,6); ... 
     zeros(1,10) g zeros(1,4); ... 
     zeros(1,12) g zeros(1,2); ... 
     zeros(1,14) g]/sqrt(2)]  

m1 = 
A A A A A A A A 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 A A A A A A A A 
A A A A -A -A -A -A 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 A A A A -A -A -A -A 
B B -B -B 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 B B -B -B 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 B B -B -B 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 B B -B -B 
C -C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 C -C 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 C -C 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 C -C 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 C -C 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 C -C 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 C -C 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 C -C 

A=1/sqrt(8), B=1/sqrt(4)C=1/sqrt(2)이 매트릭스.

필터를 통해 매트릭스를 구성하는 방법을 보여줍니다. 행렬의 아래쪽 반쪽부터 시작합니다. 행렬은 0부터 시작하여 필터 g은 모든 행에서 2 단계 더 나아갑니다. 그런 다음 필터를 두 번 넓게 만들고 반복하십시오. 한 번에 4 단계 씩 이동하십시오. 당신이 분해의 최상위 레벨에 올 때까지 이것을 반복하고, 마침내 근사 필터를 같은 너비 (여기, 8)에 놓습니다. 당신이 C++로를 작성하는 데 도움이되는 검사

>> signal=1:16; % ramp 
>> [h g]=daubcqf(2); % Haar coefficients from the Rice wavelet toolbox 
>> fwt(h,signal,3) % fwt code by Jeffrey Kantor 
>> m1*signal' % should produce the same vector  

희망으로

. 그것은 어렵지 않습니다 (약간의 부기). 그러나 효율적인 알고리즘은 필요하지 않기 때문에 아무도 그것을 사용하지 않습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 왜 그것이 비효율적인지, 사실 내가 이미 알고 있다는 것을 이해합니다. 불행하게도, 내가 연구하고있는 방법 (CS)에는 그러한 매트릭스가 필요합니다. – user3100