단시간 푸리에 변환(STFT) 알고리즘을 사용하여 조인트 시간-주파수 영역의 신호 에너지 분포를 계산합니다.


icon

입력/출력

  • ccclst.png 시간-주파수 설정

    시간-주파수 설정주파수 bin의 설정을 지정합니다. 시간-주파수 설정은 또한 STFT 스펙트로그램{X}{X}의 열 개수를 결정합니다.

  • cbool.png 주파수 레벨을 2의 거듭제곱으로 강제변환?

    주파수 bin을 2의 거듭제곱으로 강제변환? 은 주파수 bin을 2의 거듭제곱으로 강제 변환할지 지정합니다. 주파수 bin을 2의 거듭제곱으로 강제변환?이 참이고 주파수 bin이 2의 거듭제곱이 아닌 경우, 이 VI는 주파수 bin을 가장 가까운 2의 거듭제곱으로 설정합니다. 기본값은 참입니다.

  • cbool.png 나이퀴스트 주파수 제외?

    나이퀴스트 주파수 제외?STFT 스펙트로그램 {X}에서 나이퀴스트 주파수의 에너지를 제외할지 여부를 지정합니다.

    주파수 bin이 짝수이고 나이퀴스트 주파수 제외?가 참인 경우, STFT 스펙트로그램 {X}는 나이퀴스트 주파수의 에너지를 포함하지 않습니다. 주파수 bin이 홀수인 경우, LabVIEW는 나이퀴스트 주파수 제외?를 무시합니다. 기본값은 참입니다.

  • c1ddbl.png X

    X는 입력 시간 영역 신호를 지정합니다.

  • cnclst.png 시간-주파수 샘플링 정보

    시간-주파수 샘플링 정보는 밀도를 사용하여 조인트 시간-주파수 영역에서 신호를 샘플하고 결과로 얻는 2D 시간-주파수 배열의 크기를 지정합니다.

  • ci32.png 시간 간격

    시간 간격은 슬라이딩 윈도우를 이동할 샘플 개수를 지정합니다.

    시간 간격이 0보다 작거나 0일 때, 이 VI는 시간 간격을 자동으로 조절하여 STFT 스펙트로그램{X}에 512행 이상이 존재하지 않도록 합니다. 기본값은 -1입니다.

  • ci32.png 주파수 bin

    주파수 bin은 STFT의 FFT 크기를 지정합니다. 주파수 bin이 0보다 작거나 같은 경우, 이 VI는 주파수 bin을 512로 설정합니다. 주파수 bin이 1인 경우, 이 VI는 주파수 bin을 2로 강제 변환합니다. 기본값은 512입니다.

  • cnclst.png 윈도우 정보

    윈도우 정보는 STFT를 계산하기 위해서 사용하려는 윈도우에 대한 정보를 지정합니다.

  • cu32.png 타입

    타입은 STFT를 계산하기 위해서 사용하려는 윈도우의 타입을 지정합니다. 기본은 해닝입니다.

    0사각형
    1해닝
    2해밍
    3블랙맨-해리스
    4정밀한 블랙맨
    5블랙맨
    6플랫 탑
    74항 블랙맨-해리스
    87항 블랙맨-해리스
    9낮은 사이드로브
    11블랙맨 누탈
    30삼각형
    31바틀렛-해닝
    32보먼
    33파젠
    34웰치
    60카이저
    61돌프-체비셰프
    62가우스
  • ci32.png 길이

    길이는 윈도우의 길이를 샘플로 지정합니다. 길이가 0보다 작거나 같은 경우, 이 VI는 길이를 64로 설정합니다. 기본값은 64입니다.

  • cdbl.png 윈도우 파라미터

    윈도우 파라미터는 카이저 윈도우에서는 베타 파라미터, 돌프-체비셰프 윈도우에서는 사이드로브에 대한 메인로브의 비율인 s, 가우스 윈도우에서는 표준편차입니다. 윈도우 타입이 그 외 다른 윈도우인 경우, 이 VI는 이 입력을 무시합니다.

    윈도우 파라미터의 기본값은 NaN이며, 이 값은 카이저 윈도우에서는 베타를 0으로, 돌프-체비셰프 윈도우에서는 s를 60으로, 가우스 윈도우에서는 표준편차를 로 설정하며 여기서 L은 윈도우 길이입니다.

  • cbool.png 에너지 보존?

    에너지 보존?STFT 스펙트로그램 {X}를 스케일하여 조인트 시간-주파수 영역의 에너지가 시간 영역과 같도록 할지 여부를 지정합니다. 기본값은 참입니다.

  • i2ddbl.png STFT 스펙트로그램{X}

    STFT 스펙트로그램{X}는 조인트 시간-주파수 영역에서 시간 웨이브폼 에너지 분포를 나타내는 2D 배열입니다.

  • ii32.png 에러

    에러는 VI로부터 모든 에러 또는 경고를 반환합니다. 에러[에러 코드를 에러 클러스터로] VI에 연결하여 에러 코드 또는 경고를 에러 클러스터로 변환할 수 있습니다.

  • STFT 스펙트로그램 {X}를 계산하기 위해 이 VI는 우선 X의 STFT를 계산합니다. X의 STFT를 계산하기 위해 이 VI는 슬라이딩 윈도우를 사용하여 신호를 몇 개의 데이터 블록으로 나눕니다. 그 후 VI는 N 포인트 빠른 푸리에 변환을 각 데이터 블록에 적용하여 각 블록의 주파수 내용을 얻습니다. 이 때 N주파수 bin입니다. STFT는 첫번째 슬라이딩 윈도우의 중심을 신호 X의 첫번째 샘플과 정렬하고 0을 추가하여 신호의 시작을 연장합니다. 슬라이딩 윈도우는 시간 간격 샘플을 다음 데이터 블록으로 이동합니다. 윈도우가 X 밖으로 이동하는 경우, 이 VI는 X를 0으로 채웁니다.

    다음 그림은 이 VI가 STFT를 계산하는데 사용하는 과정을 보여줍니다.

    주파수 bin을 2의 거듭제곱으로 강제변환?이 참인 경우, 주파수 bin은 2의 거듭제곱이 아닙니다. 이 경우 다음 식도 참이 됩니다;

    K = 2[log2(주파수 bin)]

    여기서 [ ]는 가장 가까운 연산입니다.

    그렇지 않으면 K = 주파수 bin입니다.

    STFT의 결과가 행렬 STFT{X}인 경우, STFT{X}의 크기는 M-x-K이고, 이 때 다음은 참입니다:

    • LX의 원소 개수
    • 는 반내림 연산

    STFT{X}를 사용하여 다음 식으로 조인트 시간-주파수 영역의 에너지에 근사할 수 있습니다:

    이 결과는 다음 식에서 보는 바와 같이 시간 영역의 에너지와 거의 같습니다:

    X의 STFT를 계산한 후, 이 VI는 X의 SFTF 스펙트로그램을 계산합니다. 이 VI는 STFT 스펙트로그램을 STFT{X}에 있는 원소의 크기의 제곱으로 계산합니다. FFT가 대칭 결과를 반환하므로, 이 VI는 다음 식과 같이 STFT{X}의 왼쪽 반에 대해서만 STFT 스펙트로그램 {X}을 계산합니다:

    여기서 다음은 참입니다.

    • i = 0, 1, ..., M-1
    • j = 0, 1, ..., N-1
    • 는 반올림 연산.

    시간 간격에 작은 값을 지정하는 경우, VI가 큰 스펙트로그램을 반환할 수도 있습니다. 이렇게 되면 계산 시간이 길어지고 많은 메모리가 필요합니다. National Instruments는 시간 간격스펙트로그램의 행 개수가 512를 넘지 않도록 설정할 것을 권장합니다. 더욱 자세히 관찰하기 위해 작은 샘플링 속도가 필요하지만 신호 길이가 큰 경우에는 신호를 작은 조각으로 나누어 각 조각의 스펙트로그램을 계산합니다.

    윈도우 길이는 STFT의 시간 분해능과 주파수 분해능에 영향을 미칩니다. 좁은 윈도우를 사용하면 미세한 시간 분해능을 얻을 수 있으나 주파수 분해능은 거칠게 나타납니다. 좁은 윈도우는 지속시간이 짧은 반면 대역폭이 넓기 때문입니다. 넓은 윈도우를 사용하면 미세한 주파수 분해능을 얻을 수 있으나 시간 분해능은 거칠게 나타납니다. 넓은 윈도우는 지속시간이 긴 반면 대역폭이 좁기 때문입니다.

    이 VI는 강제 주파수 빈을 2의 거듭 제곱으로설정하고, 나이퀴스트 주파수 제외?를 설정하고, 에너지 절약? 을 TRUE로 설정하면 LabVIEW 고급 신호 처리 툴킷의 TFA STFT 스펙트로그램 VI와 동일한 결과를 반환합니다.

    예제

    LabVIEW 포함되는 다음 예제 파일을 참조하십시오.

    • labview\examples\Signal Processing\Transforms\STFT Spectrogram Demo.vi