주요 콘텐츠

dlcwt

딥러닝 연속 웨이블릿 변환

R2022b 이후

    설명

    cfs = dlcwt(x,psifvec,filteridx)x의 딥러닝 CWT(연속 웨이블릿 변환)를 반환합니다. psifvec는 실수 값 CWT 필터 뱅크이고 filteridx는 북키핑 행렬입니다. dlcwt를 사용하려면 Deep Learning Toolbox™가 필요합니다.

    cfs = dlcwt(x,psifvec,filteridx,DataFormat=fmt)x의 데이터 형식을 지정합니다.

    예제

    예제

    모두 축소

    ECG 신호를 불러옵니다. 데이터의 샘플링 주파수는 180Hz입니다. 신호를 "CBT" 형식의 dlarray로 저장합니다.

    load wecg
    Fs = 180;
    sig = dlarray(reshape(wecg,1,1,[]),"CBT");

    신호와 호환되는 CWT 필터 뱅크를 만듭니다. 주기적 경계 조건을 지정합니다.

    fb = cwtfilterbank(SignalLength=length(sig),Boundary="periodic");

    wt 객체 함수를 사용하여 wecg의 CWT 계수를 구합니다. 또한 스케일링 계수를 구합니다. 계수를 결합합니다.

    [cfsFB,~,~,scalcfs] = wt(fb,wecg);
    allCFS = [cfsFB ; scalcfs];
    whos allCFS
      Name         Size                Bytes  Class     Attributes
    
      allCFS      82x2048            2686976  double    complex   
    

    cwtfilters2array 함수를 사용하여 필터 뱅크를 딥러닝에 적합하게 축소된 가중치 텐서(reduced-weight tensor)로 변환합니다. 저역통과(스케일링) 필터를 텐서에 포함합니다.

    [psifvec,filteridx] = cwtfilters2array(fb,IncludeLowpass=true);

    신호의 딥러닝 CWT를 구합니다.

    cfsD = dlcwt(sig,psifvec,filteridx);
    dims(cfsD)
    ans = 
    'SCBT'
    

    기본적으로 출력값은 "SCBT" 형식의 dlarray 객체입니다. 공간 차원은 주파수에 대응됩니다. 출력값을 숫자형 배열로 변환합니다. 출력값의 차원을 "STCB" 형식에 맞게 치환합니다. 채널과 배치가 각각 하나씩만 있으므로 결과는 2차원 행렬이 됩니다.

    cfs = extractdata(cfsD);
    cfs = permute(cfs,[1 4 2 3]);
    whos cfs
      Name       Size                Bytes  Class     Attributes
    
      cfs       82x2048            2686976  double    complex   
    

    해당 신호에 대해 CWT와 딥러닝 CWT가 동일한지 확인합니다.

    max(abs(cfs(:)-allCFS(:)))
    ans = 
    1.0235e-09
    

    Espiga3 EEG 데이터셋을 불러옵니다. 데이터는 200Hz로 샘플링된 EEG의 23개 채널로 구성되어 있습니다. 각 채널에는 995개의 샘플이 있습니다. 차원을 순서대로 지정하여 다중 신호를 dlarray로 저장합니다. dlarray는 배열 차원을 딥러닝 신경망에 필요한 "CBT" 형태로 치환합니다.

    load Espiga3
    Fs = 200;
    [N,nch] = size(Espiga3);
    x = dlarray(Espiga3,"TCB");
    whos Espiga3 x
      Name           Size                Bytes  Class      Attributes
    
      Espiga3      995x23               183080  double               
      x             23x1x995            183110  dlarray              
    

    신호와 호환되는 CWT 필터 뱅크를 만듭니다. 주기적 경계 조건을 지정합니다. 그런 다음 cwtfilters2array 함수를 사용하여 필터 뱅크를 딥러닝에 적합하게 축소된 가중치 텐서(reduced-weight tensor)로 변환합니다.

    fb = cwtfilterbank(SignalLength=N,Boundary="periodic");
    [psifvec,filteridx] = cwtfilters2array(fb);

    다중 신호의 딥러닝 CWT를 구합니다.

    cfsD = dlcwt(x,psifvec,filteridx);
    dims(cfsD)
    ans = 
    'SCBT'
    

    기본적으로 출력값은 "SCBT" 형식의 dlarray 객체입니다. 공간 차원은 주파수에 대응됩니다. 출력값을 숫자형 배열로 변환합니다. 출력값의 차원을 "STCB" 형식에 맞게 치환합니다. 배치가 하나만 있으므로 결과는 3차원 배열이 됩니다.

    cfs = extractdata(cfsD);
    cfs = permute(cfs,[1 4 2 3]);
    whos cfs
      Name       Size                   Bytes  Class     Attributes
    
      cfs       71x995x23            25997360  double    complex   
    

    원래 필터 뱅크에서 중심 주파수를 구합니다. 채널의 스케일로그램을 표시합니다.

    frq = centerFrequencies(fb);
    channel = 4;
    cfsChannel = cfs(:,:,channel);
    tms = (0:N-1)/Fs;
    surface(tms,frq,abs(cfsChannel))
    set(gca,"yscale","log")
    axis tight
    shading flat
    title("Scalogram")
    xlabel("Time (s)")
    ylabel("Frequency (Hz)")

    Figure contains an axes object. The axes object with title Scalogram, xlabel Time (s), ylabel Frequency (Hz) contains an object of type surface.

    입력 인수

    모두 축소

    입력 데이터로, 형식이 지정되지 않은 실수 값의 dlarray 객체, "CBT" 형식으로 지정된 dlarray 또는 숫자형 배열로 지정됩니다. x가 형식이 지정되지 않은 dlarray이거나 숫자형 배열인 경우, 'DataFormat'"CBT"의 순열 중 하나로 지정해야 합니다.

    데이터형: single | double

    CWT 필터 뱅크로, 1×1×Nr 텐서로 지정됩니다. 여기서 Nr은 축소된 가중치(reduced-weight) CWT 필터 뱅크에 포함된 가중치의 개수입니다. psifveccwtfilters2array를 사용하여 구합니다.

    array2cwtfilters를 사용하여 cwtfilters2array의 출력으로부터 2차원 CWT 필터 뱅크를 복원할 수 있습니다.

    데이터형: double

    북키핑 행렬로, 행렬로 지정됩니다. dlcwt 함수는 CWT를 계산하기 위해 filteridx를 사용하여 데이터 x와 필터 뱅크 psifvec의 요소를 참조합니다. filteridxcwtfilters2array를 사용하여 구합니다.

    데이터형: uint32

    x의 입력 데이터 형식으로, "CBT"의 순열 중 하나로 지정됩니다. 이 인수는 x가 형식이 지정된 dlarray인 경우에는 유효하지 않습니다.

    이 인수의 각 문자는 다음 레이블 중 하나여야 합니다.

    • "C" — 채널

    • "B" — 배치

    • "T" — 시간

    dlcwt 함수는 "CBT"의 모든 순열을 허용합니다. 인수의 각 요소는 x의 일치하는 차원에 레이블을 지정합니다.

    예: w = dlcwt(x,psifvec,filteridx,DataFormat="BCT")는 형식이 지정되지 않은 dlarray 객체의 데이터 형식을 "BCT"로 지정합니다.

    데이터형: char | string

    출력 인수

    모두 축소

    x의 연속 웨이블릿 변환으로, dlarray 객체로 반환됩니다.

    • x가 형식이 지정된 dlarray 객체인 경우 cfs"SCBT" 형식입니다. 공간 차원은 스케일에 대응되며, 또는 동일하게 웨이블릿 대역통과 필터의 중심 주파수에 대응됩니다. 채널, 배치, 시간 차원은 x의 채널, 배치, 시간 차원에 대응됩니다.

    • x가 형식이 지정되지 않은 dlarray 객체이거나 숫자형 배열인 경우 cfs는 형식이 지정되지 않은 dlarray 객체입니다. cfs의 차원 순서는 "SCBT"입니다.

    확장 기능

    모두 확장

    C/C++ 코드 생성
    MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다. (R2026a 이후)

    GPU 코드 생성
    GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다. (R2026a 이후)

    버전 내역

    R2022b에 개발됨

    모두 확장

    참고 항목

    함수

    객체

    도움말 항목