Main Content

wavedec

멀티레벨 1차원 이산 웨이블릿 변환

설명

예제

[c,l] = wavedec(x,n,wname)은 웨이블릿 wname을 사용하여 레벨 n에서 1차원 신호 x의 웨이블릿 분해를 반환합니다. 출력 분해 구조체는 웨이블릿 분해 벡터 cc를 구문 분석하는 데 사용되는 북키핑(bookkeeping) 벡터 l로 구성됩니다.

[c,l] = wavedec(x,n,LoD,HiD)는 지정된 저역통과 및 고역통과 웨이블릿 분해 필터 LoDHiD를 각각 사용하여 웨이블릿 분해를 반환합니다.

예제

[c,l] = wavedec(___,Mode=extmode)는 지정된 DWT(이산 웨이블릿 변환) 확장 모드 extmode를 사용합니다. 이 구문은 위에 열거된 구문과 함께 사용할 수 있습니다.

예제

모두 축소

1차원 신호를 불러오고 플로팅합니다.

load sumsin 
plot(sumsin)
title("Signal")

Figure contains an axes object. The axes object with title Signal contains an object of type line.

차수 2의 Daubechies 웨이블릿을 사용하여 신호의 3-레벨 웨이블릿 분해를 수행합니다. 분해에서 성긴 스케일 근사 계수와 세부성분 계수를 추출합니다.

[c,l] = wavedec(sumsin,3,"db2");
approx = appcoef(c,l,"db2");
[cd1,cd2,cd3] = detcoef(c,l,[1 2 3]);

계수를 플로팅합니다.

tiledlayout(4,1)
nexttile
plot(approx)
title("Approximation Coefficients")
nexttile
plot(cd3)
title("Level 3 Detail Coefficients")
nexttile
plot(cd2)
title("Level 2 Detail Coefficients")
nexttile
plot(cd1)
title("Level 1 Detail Coefficients")

Figure contains 4 axes objects. Axes object 1 with title Approximation Coefficients contains an object of type line. Axes object 2 with title Level 3 Detail Coefficients contains an object of type line. Axes object 3 with title Level 2 Detail Coefficients contains an object of type line. Axes object 4 with title Level 1 Detail Coefficients contains an object of type line.

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

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

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

db4 웨이블릿을 사용하여 GPU에서 신호의 3-레벨 DWT를 구합니다. gpuArray 입력값에 zpd 확장 모드가 지원되지 않더라도 이를 지정합니다. 대신 wavedec 함수는 sym 확장 모드를 사용합니다.

[czpd,lzpd] = wavedec(noisdoppg,3,"db4",Mode="zpd");

wavedec 함수가 sym 확장 모드를 사용했는지 확인합니다. 전역 확장 모드를 sym으로 설정하고 확장 모드를 지정하지 않고 noisdoppg의 3-레벨 DWT를 구합니다. 이 결과가 이전 결과와 같은지 확인합니다.

dwtmode("sym","nodisp")
[csym,lsym] = wavedec(noisdoppg,3,"db4");
[max(abs(czpd-csym)) max(abs(lzpd-lsym))]
ans =

     0     0

gpuArray 입력값에 지원되는 per 확장 모드를 사용하여 noisdoppg의 3-레벨 DWT를 구합니다. 이 결과가 sym 결과와 다른지 확인합니다.

[cper,lper] = wavedec(noisdoppg,3,"db4",Mode="per");
[length(csym) ; length(cper)]
ans = 2×1

        1044
        1024

[lsym ; lper]
ans =

         134         134         261         515        1024
         128         128         256         512        1024

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

dwtmode(origMode,"nodisp")

입력 인수

모두 축소

입력 신호로, 벡터로 지정됩니다.

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

분해 레벨로, 양의 정수로 지정됩니다. wavedec는 최대 레벨 제한을 적용하지 않습니다. wmaxlev를 사용하여 웨이블릿 계수에 경계 효과가 없는지 확인합니다. 활용 분야에서 경계 효과가 문제가 되지 않는 경우 nfix(log2(length(x)))보다 작거나 같게 설정하는 것이 좋습니다.

데이터형: single | double

분석에 사용되는 웨이블릿으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

참고

wavedec는 유형 1(직교) 또는 유형 2(쌍직교) 웨이블릿만 지원합니다. 직교 및 쌍직교 웨이블릿 목록을 보려면 wfilters 항목을 참조하십시오.

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

데이터형: single | double

R2023b 이후

DWT에 사용할 확장 모드로, 다음으로 지정됩니다.

mode

DWT 확장 모드

"zpd"

0 확장

"sp0"

차수 0 평활화 확장

"spd"(또는 "sp1")

차수 1 평활화 확장

"sym" 또는 "symh"

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

"symw"

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

"asym" 또는 "asymh"

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

"asymw"

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

"ppd", "per"

주기적 확장

신호 길이가 홀수이고 mode"per"인 경우 마지막 값과 같은 추가 샘플이 오른쪽에 추가되고 "ppd" 모드에서 확장이 수행됩니다. 신호 길이가 짝수인 경우 "per""ppd"와 동일합니다.

dwtmode에 의해 관리되는 전역 변수는 디폴트 확장 모드를 지정합니다.

출력 인수

모두 축소

웨이블릿 분해 벡터로, 벡터로 반환됩니다.

데이터형: single | double

북키핑(bookkeeping) 벡터로, 양의 정수로 구성된 벡터로 반환됩니다. 벡터는 레벨별 계수의 개수와 원래 신호의 길이를 포함합니다.

북키핑 벡터는 웨이블릿 분해 벡터 c의 계수를 레벨별로 구문 분석하는 데 사용됩니다. 분해 벡터와 북키핑 벡터는 다음 3-레벨 도식에서와 같이 구성됩니다.

데이터형: single | double

알고리즘

길이가 N인 신호 s가 주어지면 DWT는 최대 log2 N 단계로 구성됩니다. s부터 시작하여 첫 번째 단계에서는 근사 계수 cA1과 세부성분 계수 cD1의 두 개의 계수 집합을 생성합니다. s를 저역통과 필터 LoD와 고역통과 필터 HiD로 컨벌루션한 후 다이애딕(dyadic) 데시메이션(인자 2로 다운샘플링)을 수행하면 근사 계수와 세부성분 계수가 각각 생성됩니다.

여기서

  • — 필터 X로 컨벌루션

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

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

floor(N12)+n

다음 단계에서는 s를 cA1로 바꾸고 cA2 및 cD2를 생성하는 식으로 동일한 방식을 사용하여 근사 계수 cA1을 두 부분으로 나눕니다.

레벨 j에서 분석된 신호 s의 웨이블릿 분해는 [cAj, cDj, ..., cD1] 구조를 갖습니다.

j = 3인 경우 이 구조는 다음 트리의 터미널 노드를 포함합니다.

참고 문헌

[1] Daubechies, I. Ten Lectures on Wavelets, CBMS-NSF Regional Conference Series in Applied Mathematics. Philadelphia, PA: SIAM Ed, 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 이전에 개발됨

모두 확장