Main Content

dwt

단일 레벨 1차원 이산 웨이블릿 변환

설명

예제

[cA,cD] = dwt(x,wname)wname으로 지정된 웨이블릿을 사용하여 벡터 x의 단일 레벨 DWT(이산 웨이블릿 변환)를 반환합니다. 웨이블릿은 wavemngr에서 인식되어야 합니다. dwt는 DWT의 근사 계수 벡터 cA와 세부성분 계수 벡터 cD를 반환합니다.

참고

응용 분야에 멀티레벨 웨이블릿 분해가 필요한 경우에는 wavedec를 사용해 보십시오.

예제

[cA,cD] = dwt(x,LoD,HiD)는 지정된 저역통과 및 고역통과 웨이블릿 분해 필터 LoDHiD를 각각 사용하여 단일 레벨 DWT를 반환합니다.

[cA,cD] = dwt(___,'mode',extmode)는 지정된 확장 모드 extmode를 사용하여 단일 레벨 DWT를 반환합니다. 자세한 내용은 dwtmode 항목을 참조하십시오. 위에 열거된 모든 입력 구문에 이 인수를 추가할 수 있습니다.

참고

gpuArray 입력값에 지원되는 모드는 'symh'('sym') 및 'per'입니다. 'per'을 제외한 모든 'mode' 옵션은 'symh'로 변환됩니다. GPU에서 단일 레벨 이산 웨이블릿 변환 예제를 참조하십시오.

예제

모두 축소

웨이블릿 이름을 사용하여 잡음이 있는 도플러 신호의 단일 레벨 DWT를 구합니다.

load noisdopp;
[cA,cD] = dwt(noisdopp,'sym4');

근사 계수를 사용하여 평활화된 신호를 복원합니다. 이 신호를 플로팅하고 원래 신호와 비교합니다.

xrec = idwt(cA,zeros(size(cA)),'sym4');
plot(noisdopp)
hold on
grid on
plot(xrec)
legend('Original','Reconstruction')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original, Reconstruction.

웨이블릿(고역통과) 및 스케일링(저역통과) 필터를 사용하여 잡음이 있는 도플러 신호의 단일 레벨 DWT를 구합니다.

load noisdopp;
[LoD,HiD] = wfilters('bior3.5','d');
[cA,cD] = dwt(noisdopp,LoD,HiD);

동일한 웨이블릿을 사용하여 잡음이 있는 도플러 신호에 적용할 수 있는 DWT 필터 뱅크를 만듭니다. 필터 뱅크에서 고역통과 및 저역통과 필터를 가져옵니다.

len = length(noisdopp);
fb = dwtfilterbank('SignalLength',len,'Wavelet','bior3.5');
[lo,hi] = filters(fb);

bior3.5 웨이블릿의 경우 lohi는 12×2 행렬입니다. lo는 저역통과 필터이고 hi는 고역통과 필터입니다. lohi의 첫 번째 열은 분석에 사용되고 두 번째 열은 합성에 사용됩니다. lohi의 첫 번째 열을 각각 LoDHiD와 비교합니다. 비교한 값들이 같은지 확인합니다.

disp('Lowpass Analysis Filters')
Lowpass Analysis Filters
[lo(:,1) LoD']
ans = 12×2

   -0.0138   -0.0138
    0.0414    0.0414
    0.0525    0.0525
   -0.2679   -0.2679
   -0.0718   -0.0718
    0.9667    0.9667
    0.9667    0.9667
   -0.0718   -0.0718
   -0.2679   -0.2679
    0.0525    0.0525
      ⋮

disp('Highpass Analysis Filters')
Highpass Analysis Filters
[hi(:,1) HiD']
ans = 12×2

         0         0
         0         0
         0         0
         0         0
   -0.1768   -0.1768
    0.5303    0.5303
   -0.5303   -0.5303
    0.1768    0.1768
         0         0
         0         0
      ⋮

첫 번째 레벨 웨이블릿 및 스케일링 필터의 단측 크기 주파수 응답을 플로팅합니다.

[psidft,f,phidft] = freqz(fb);
level = 1;
plot(f(len/2+1:end),abs(phidft(level,len/2+1:end)))
hold on
plot(f(len/2+1:end),abs(psidft(level,len/2+1:end)))
grid on
legend('Scaling Filter','Wavelet Filter')
title('First-Level One-sided Frequency Responses')
xlabel('Normalized Frequency (cycles/sample)')
ylabel('Magnitude')

Figure contains an axes object. The axes object with title First-Level One-sided Frequency Responses, xlabel Normalized Frequency (cycles/sample), ylabel Magnitude contains 2 objects of type line. These objects represent Scaling Filter, Wavelet Filter.

지원되는 GPU를 보려면 GPU 연산 요구 사항 (Parallel Computing Toolbox) 항목을 참조하십시오.

잡음이 있는 도플러 신호를 불러옵니다. gpuArray를 사용하여 GPU에 신호를 입력합니다. 현재 확장 모드를 저장합니다.

load noisdopp
noisdoppg = gpuArray(noisdopp);
origMode = dwtmode('status','nodisp');

dwtmode를 사용하여 확장 모드를 0 채우기로 변경합니다. db2 웨이블릿을 사용하여 GPU에서 신호의 단일 레벨 이산 웨이블릿 변환을 구합니다.

dwtmode('zpd','nodisp')
[cA,cD] = dwt(noisdoppg,'db2');

현재 확장 모드 zpdgpuArray 입력값에서 지원되지 않습니다. 따라서 DWT는 대신 sym 확장 모드를 사용하여 수행됩니다. 확장 모드를 sym으로 설정하고 noisdoppg의 DWT를 수행하여 이를 확인한 다음 이전 결과와 비교합니다.

[cAsym,cDsym] = dwt(noisdoppg,'db2','mode','sym');
[max(abs(cA-cAsym)) max(abs(cD-cDsym))]
ans =

     0     0

지원되지 않는 확장 모드가 입력 인수로 지정된 경우 'sym'으로 변환됩니다. 'mode'를 지원되지 않는 모드로 설정한 상태로 noisdoppg의 DWT를 수행할 경우에도 기본적으로 sym 확장 모드로 설정되는지 확인합니다.

[cA,cD] = dwt(noisdoppg,'db2','mode','spd');
[max(abs(cA-cAsym)) max(abs(cD-cDsym))]
ans =

     0     0

현재 확장 모드를 주기적 확장으로 변경합니다. db2 웨이블릿을 사용하여 GPU에서 신호의 단일 레벨 이산 웨이블릿 변환을 구합니다.

dwtmode('per','nodisp')
[cA,cD] = dwt(noisdoppg,'db2');

현재 확장 모드 pergpuArray 입력값에서 지원되는지 확인합니다.

[cAper,cDper] = dwt(noisdopp,'db2','mode','per');
[max(abs(cA-cAper)) max(abs(cD-cDper))]
ans =

     0     0

확장 모드를 원래 설정으로 복원합니다.

dwtmode(origMode,'nodisp')

입력 인수

모두 축소

입력 데이터로, 벡터로 지정됩니다.

데이터형: single | double
복소수 지원 여부:

단일 레벨 DWT를 계산하는 데 사용되는 분석 웨이블릿으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 웨이블릿은 wavemngr에서 인식되어야 합니다. 분석 웨이블릿은 다음 웨이블릿 패밀리 중 하나에 속해 있습니다: 최선 국소화 Daubechies, Beylkin, Coiflets, Daubechies, Fejér-Korovkin, Haar, Han 선형 위상 모멘트, Morris 최소 대역폭, Symlets, Vaidyanathan, 이산 Meyer, 쌍직교 및 역 쌍직교. 각 패밀리에서 사용 가능한 웨이블릿을 보려면 wfilters 항목을 참조하십시오.

예: 'db4'

웨이블릿 분해 필터로, 짝수 길이 실수 값 벡터의 쌍으로 지정됩니다. LoD는 저역통과 분해 필터이고 HiD는 고역통과 분해 필터입니다. LoDHiD의 길이는 동일해야 합니다. 자세한 내용은 wfilters 항목을 참조하십시오.

데이터형: single | double

DWT를 수행할 때 사용되는 확장 모드로, 다음 중 하나로 지정됩니다.

mode

DWT 확장 모드

'zpd'

0 확장

'sp0'

차수 0 평활화 확장

'spd'(또는 'sp1')

차수 1 평활화 확장

'sym' 또는 'symh'

대칭 확장(반점): 경계값 대칭 복제

'symw'

대칭 확장(온점): 경계값 대칭 복제

'asym' 또는 'asymh'

반대칭 확장(반점): 경계값 반대칭 복제

'asymw'

반대칭 확장(온점): 경계값 반대칭 복제

'ppd'

주기적 확장 (1)

'per'

주기적 확장 (2)

신호 길이가 홀수인 경우 wextend는 마지막 값과 같은 추가 샘플을 오른쪽에 추가하고 'ppd' 모드를 사용하여 확장을 수행합니다. 그렇지 않으면 'per''ppd'로 축소됩니다. 이 규칙은 영상에도 적용됩니다.

dwtmode에 의해 관리되는 전역 변수는 디폴트 확장 모드를 지정합니다. 확장 모드에 대한 설명은 dwtmode 항목을 참조하십시오.

예: [cA,cD] = dwt(x,'db4','mode','symw')는 차수 4 Daubechies 극값 위상 웨이블릿 및 온점 대칭 확장을 사용하여 x의 단일 레벨 DWT를 반환합니다.

출력 인수

모두 축소

웨이블릿 분해에서 가져온 근사 계수로, 벡터로 반환됩니다. 입력 신호 x를 스케일링 필터 LoD로 컨벌루션한 후 다이애딕(dyadic) 데시메이션을 수행하면 근사 계수가 생성됩니다. sx = size(x)라고 하고, lf = 분해 필터의 길이라고 하겠습니다.

  • DWT 확장 모드가 주기화로 설정된 경우 cA는 길이가 ceil(sx/2)인 벡터입니다.

  • 다른 확장 모드의 경우 cA는 길이가 floor((sx+lf-1)/2)인 벡터입니다.

데이터형: single | double

웨이블릿 분해에서 가져온 세부성분 계수로, 벡터로 반환됩니다. 입력 신호 x를 웨이블릿 필터 HiD로 컨벌루션한 후 다이애딕(dyadic) 데시메이션을 수행하면 세부성분 계수가 생성됩니다. sx = size(x)라고 하고, lf = 분해 필터의 길이라고 하겠습니다.

  • DWT 확장 모드가 주기화로 설정된 경우 cD는 길이가 ceil(sx/2)인 벡터입니다.

  • 다른 확장 모드의 경우 cD는 길이가 floor((sx+lf-1)/2)인 벡터입니다.

데이터형: single | double

알고리즘

길이가 N인 신호 s부터 시작하여 근사 계수 cA1과 세부성분 계수 cD1의 두 개의 계수 집합이 계산됩니다. s를 스케일링 필터 LoD로 컨벌루션한 후 다이애딕(dyadic) 데시메이션을 수행하면 근사 계수가 생성됩니다. 마찬가지로, s를 웨이블릿 필터 HiD로 컨벌루션한 후 다이애딕(dyadic) 데시메이션을 수행하면 세부성분 계수가 생성됩니다.

여기서

  • — 필터 X로 컨벌루션

  • 2 — 다운샘플링(짝수 인덱스 요소 유지)

각 필터의 길이는 2n입니다. N = length(s)이면 신호 F와 G의 길이는 N + 2n −1이고, 계수 cA1 및 cD1의 길이는 floor(N12)+n입니다.

컨벌루션 기반 알고리즘에서 발생하는 신호쪽 영향을 처리하기 위해, dwtmode에 의해 관리되는 전역 변수는 사용되는 신호 확장 모드의 종류를 정의합니다. 가능한 옵션에는 0 채우기 및 대칭 확장(디폴트 모드)이 포함됩니다.

참고

동일한 입력값에 대해 dwt 함수와 DSP System Toolbox™의 DWT 블록은 같은 결과를 생성하지 않습니다. DWT 블록은 실시간 구현을 위해 설계된 반면 Wavelet Toolbox™는 분석용으로 설계되었으므로, 경계 조건과 필터 상태가 각각 다르게 처리됩니다.

dwt 함수 출력값이 DWT 블록 출력과 일치하도록 만들려면 MATLAB® 명령 프롬프트에 dwtmode('zpd')를 입력하여 함수 경계 조건을 0 채우기로 설정하십시오. FIR 필터를 사용하여 구현되는 DWT 블록의 대기 시간을 일치시키려면 dwt 함수의 입력값에 0을 추가하십시오. 추가하는 0의 개수는 필터 길이의 절반과 같아야 합니다.

참고 문헌

[1] Daubechies, I. Ten Lectures on Wavelets. CBMS-NSF Regional Conference Series in Applied Mathematics. Philadelphia, PA: Society for Industrial and Applied Mathematics, 1992.

[2] Mallat, S. G. “A Theory for Multiresolution Signal Decomposition: The Wavelet Representation.” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 11, Issue 7, July 1989, pp. 674–693.

[3] Meyer, Y. Wavelets and Operators. Translated by D. H. Salinger. Cambridge, UK: Cambridge University Press, 1995.

확장 기능

버전 내역

R2006a 이전에 개발됨