Main Content

wvd

위그너-빌 분포 및 평활화된 유사 위그너-빌 분포

설명

예제

d = wvd(x)x의 위그너-빌 분포를 반환합니다.

예제

d = wvd(x,fs)x가 레이트 fs로 샘플링될 때 위그너-빌 분포를 반환합니다.

예제

d = wvd(x,ts)x가 샘플 간 시간 간격 ts로 샘플링될 때 위그너-빌 분포를 반환합니다.

d = wvd(___,"smoothedPseudo")x의 평활화된 유사 위그너-빌 분포를 반환합니다. 이 함수는 입력 신호의 길이를 사용하여 시간 및 주파수 평활화에 사용할 윈도우의 길이를 선택합니다. 이 구문은 위에 열거된 구문에 사용할 수 있습니다.

예제

d = wvd(___,"smoothedPseudo",twin,fwin)은 평활화에 사용되는 시간 윈도우 twin 및 주파수 윈도우 fwin을 지정합니다. 시간 또는 주파수 평활화에 디폴트 윈도우를 사용하려면 해당 인수를 빈 값 []로 지정하십시오.

예제

d = wvd(___,"smoothedPseudo",Name=Value)는 이름-값 인수를 사용하여 평활화된 유사 위그너-빌 분포에 대한 추가 옵션을 지정합니다. 이 구문에서 twinfwin을 지정하거나 생략할 수도 있습니다.

예제

d = wvd(___,MinThreshold=thresh)는 진폭이 thresh보다 작은 d의 요소를 0으로 설정합니다. 이 구문은 위그너-빌 분포 및 평활화된 유사 위그너-빌 분포 모두에 적용됩니다.

예제

[d,f,t] = wvd(___)는 주파수 벡터인 fd가 계산되는 시간 값의 벡터인 t도 반환합니다.

wvd(___)에 출력 인수를 지정하지 않으면 현재 Figure에 위그너-빌 또는 평활화된 유사 위그너-빌 분포를 플로팅합니다.

예제

모두 축소

정규화 주파수 π/2를 사용하여 1000개 샘플로 구성된 임펄스 및 1000개 샘플로 구성된 톤을 생성합니다. 두 신호의 합의 위그너-빌 분포를 계산합니다.

x = zeros(1001,1);
x(500) = 10;

y = sin(pi*(0:1000)/2)';

[d,f,t] = wvd(x+y);

위그너-빌 분포를 플로팅합니다.

imagesc(t,f,d)
axis xy
colorbar

Figure contains an axes object. The axes object contains an object of type image.

출력 인수 없이 wvd를 호출하여 결과를 재현합니다.

wvd(x+y)

Figure contains an axes object. The axes object with title Wigner-Ville Distribution, xlabel Samples, ylabel Normalized Frequency ( times pi blank radians/sample) contains an object of type image.

1kHz에서 1.5초간 샘플링된 200Hz 정현파로 구성된 신호를 생성합니다.

fs = 1000;
t = (0:1/fs:1.5)';
x = cos(2*pi*t*200);

신호의 위그너-빌 분포를 계산합니다.

wvd(x,fs)

Figure contains an axes object. The axes object with title Wigner-Ville Distribution, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

250Hz ~ 450Hz의 범위에서 정현적으로 변하는 주파수 성분을 갖는 처프를 신호에 추가합니다. 신호를 MATLAB® 타임테이블로 변환합니다. 위그너-빌 분포를 계산합니다.

x = x + vco(cos(2*pi*t),[250 450],fs);
xt = timetable(seconds(t),x);

wvd(xt)

Figure contains an axes object. The axes object with title Wigner-Ville Distribution, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

진폭이 0보다 적은 분포 요소는 0으로 설정합니다.

wvd(xt,MinThreshold=0)

Figure contains an axes object. The axes object with title Wigner-Ville Distribution, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

1초 동안 1kHz로 샘플링된 신호를 생성합니다. 신호의 성분 중 하나는 측정하는 동안 주파수가 100Hz에서 400Hz로 2차식 증가하는 처프입니다. 신호의 다른 성분은 동일한 기간 동안 주파수가 350Hz에서 50Hz로 선형 감소하는 처프입니다.

신호를 타임테이블에 저장합니다.

fs = 1000;
t = 0:1/fs:1;

x = chirp(t,100,1,400,"quadratic") + chirp(t,350,1,50);

신호의 위그너-빌 분포를 계산합니다.

wvd(x,fs)

Figure contains an axes object. The axes object with title Wigner-Ville Distribution, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

신호의 평활화된 유사 위그너-빌 분포를 계산합니다. 주파수 지점을 501개로, 시간 지점을 502개로 지정합니다.

wvd(x,fs,"smoothedPseudo",NumFrequencyPoints=501,NumTimePoints=502)

Figure contains an axes object. The axes object with title Smoothed Pseudo Wigner-Ville Distribution, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

2차 처프가 표시되도록 시간 지점 개수를 늘립니다.

wvd(x,fs,"smoothedPseudo",NumFrequencyPoints=501,NumTimePoints=522)

Figure contains an axes object. The axes object with title Smoothed Pseudo Wigner-Ville Distribution, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

더 선명한 영상을 얻을 수 있도록 주파수 지점과 시간 지점을 늘립니다.

wvd(x,fs,"smoothedPseudo",NumFrequencyPoints=1000,NumTimePoints=1502)

Figure contains an axes object. The axes object with title Smoothed Pseudo Wigner-Ville Distribution, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

1초간 3kHz로 샘플링된 두 개의 성분을 갖는 신호를 생성합니다. 첫 번째 성분은 2차 처프이며, 그 주파수는 측정하는 동안 300Hz에서 1300Hz로 증가합니다. 두 번째 성분은 정현적으로 변하는 주파수 성분을 갖는 처프입니다. 이 신호는 백색 가우스 잡음에 묻혀 있습니다. 연속 샘플 간 시간을 duration형 스칼라로 표현합니다.

fs = 3000;
t = 0:1/fs:1-1/fs;
dt = seconds(t(2)-t(1));

x1 = chirp(t,300,t(end),1300,"quadratic");
x2 = exp(2j*pi*100*cos(2*pi*2*t));

x = x1 + x2 + randn(size(t))/10;

신호의 평활화된 유사 위그너-빌을 계산하고 플로팅합니다. 601개 샘플로 구성된 해밍 윈도우를 사용하여 시간 분포에 윈도우를 적용하고, 305개 샘플로 구성된 사각 윈도우를 사용하여 주파수 분포에 윈도우를 적용합니다. 디스플레이에 600개의 주파수 지점을 사용합니다. 진폭이 -50보다 작은 분포의 성분을 0으로 설정합니다.

wvd(x,dt,"smoothedPseudo",hamming(601),rectwin(305), ...
    NumFrequencyPoints=600,MinThreshold=-50)

Figure contains an axes object. The axes object with title Smoothed Pseudo Wigner-Ville Distribution, xlabel Time (ms), ylabel Frequency (kHz) contains an object of type image.

4개의 가우스 원자로 구성된 신호를 생성합니다. 각 원자는 하나의 가우스 변조 정현파로 구성됩니다. 이 정현파는 주파수가 100Hz와 400Hz입니다. 이 가우스는 150밀리초 및 350밀리초에서 중심이 맞춰지며 분산 값은 0.012입니다. 모든 원자가 단위 진폭을 갖습니다. 신호는 1kHz에서 0.5초간 샘플링됩니다.

fs = 1000;
t = (0:1/fs:0.5)';

f1 = 100;
f2 = 400;

mu1 = 0.15;
mu2 = 0.35;

gaussFun = @(A,x,mu,f) exp(-(x-mu).^2/(2*0.01^2)).*sin(2*pi*f.*x)*A';

s = gaussFun([1 1 1 1],t,[mu1 mu1 mu2 mu2],[f1 f2 f1 f2]);

신호의 위그너-빌 분포를 계산하고 표시합니다. 음수 값을 가질 수 있는 간섭 항이 각각의 자동 항 쌍의 중간에 나타납니다.

wvd(s,fs)

Figure contains an axes object. The axes object with title Wigner-Ville Distribution, xlabel Time (ms), ylabel Frequency (Hz) contains an object of type image.

신호의 평활화된 유사 위그너-빌 분포를 계산하고 표시합니다. 시간 및 주파수 평활화로 간섭 항이 감쇠됩니다.

wvd(s,fs,"smoothedPseudo")

Figure contains an axes object. The axes object with title Smoothed Pseudo Wigner-Ville Distribution, xlabel Time (ms), ylabel Frequency (Hz) contains an object of type image.

입력 인수

모두 축소

입력 신호로, 벡터 또는 단일 벡터 변수가 포함된 MATLAB® 타임테이블로 지정됩니다.

입력 신호가 홀수 길이일 경우 이 함수는 0을 추가하여 짝수 길이로 만듭니다.

예: cos(pi/8*(0:159))'+randn(160,1)/10은 백색 잡음에 묻혀 있는 정현파를 지정합니다.

예: timetable(seconds(0:5)',rand(6,1))은 5초간 1Hz로 샘플링된 확률 변수를 지정합니다.

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

샘플 레이트로, 양의 숫자형 스칼라로 지정됩니다.

샘플 시간으로, duration형 스칼라로 지정됩니다.

평활화에 사용되는 시간 및 주파수 윈도우로, 홀수 길이의 벡터로 지정됩니다. 기본적으로 wvd는 형태 인자가 β = 20인 카이저 윈도우를 사용합니다.

  • twin의 디폴트 길이는 round(length(x)/10)보다 크거나 같은 홀수 중 가장 작은 값입니다.

  • fwin의 디폴트 길이는 nf/4보다 크거나 같은 홀수 중 가장 작은 값입니다. nfNumFrequencyPoints를 사용하여 지정합니다.

각 윈도우의 길이는 2*ceil(length(x)/2) 이하여야 합니다.

예: kaiser(65,0.5)는 형태 인자가 0.5이고 65개 샘플로 구성된 카이저 윈도우를 지정합니다.

0이 아닌 최솟값으로, 실수형 스칼라로 지정됩니다. 이 함수는 진폭이 thresh 미만인 d의 요소를 0으로 설정합니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'NumFrequencyPoints',201,'NumTimePoints',300은 201개의 주파수 지점과 300개의 시간 지점에서 위그너-빌 분포를 계산합니다.

주파수 지점 개수로, 정수로 지정됩니다. 이 인수는 주파수의 오버샘플링 정도를 제어합니다. 주파수 지점 개수는 적어도 (length(fwin)+1)/2이어야 하며 디폴트 값보다 클 수 없습니다.

시간 지점 개수로, 짝수로 지정됩니다. 이 인수는 시간의 오버샘플링 정도를 제어합니다 [3] (Signal Processing Toolbox). 시간 지점 개수는 적어도 2*length(twin)이어야 하며 디폴트 값보다 클 수 없습니다.

입력 신호가 클 경우, 메모리 요구 사항을 줄이고 계산 속도를 높일 수 있도록 시간 지점 개수를 줄이십시오.

출력 인수

모두 축소

위그너-빌 분포로, 행렬로 반환됩니다. 시간은 d의 열 방향으로 증가하고, 주파수는 행 방향으로 증가합니다. 행렬의 크기는 Nf × Nt입니다. 여기서 Nff의 길이이며 Ntt의 길이입니다.

주파수로, 벡터로 반환됩니다.

  • 입력값에 시간 정보가 있으면 f에는 Hz 단위의 주파수가 포함됩니다.

  • 입력값에 시간 정보가 없는 경우 f에는 rad/sample 단위의 정규화 주파수가 포함됩니다.

시점으로, 벡터로 반환됩니다.

  • 입력값에 시간 정보가 있으면 t에는 초 단위의 시간 값이 포함됩니다.

  • 입력값에 시간 정보가 없는 경우 t에는 샘플 번호가 포함됩니다.

세부 정보

모두 축소

위그너-빌 분포

위그너-빌 분포는 신호에 대한 고분해능 시간-주파수 표현을 제공합니다. 이 분포는 신호 시각화, 탐지, 추정에 사용할 수 있습니다.

연속 신호 x(t)의 경우 위그너-빌 분포는 다음과 같이 정의됩니다.

WVDx(t,f)=x(t+τ2)x*(tτ2)ej2πfτdτ.

N개의 샘플을 갖는 이산 신호의 경우 분포는 다음과 같이 됩니다.

WVDx(n,k)=m=NNx(n+m/2)x*(nm/2)ej2πkm/N.

m의 값이 홀수인 경우 이 정의에서는 반정수 샘플 값에서 신호를 계산해야 합니다. 따라서 보간이 필요하므로, 이산 푸리에 변환에 0을 채워 에일리어싱을 방지해야 합니다.

위그너-빌 분포에 포함된 간섭 항 때문에 보간이 복잡해질 때가 많습니다. 더 선명한 분포를 위해 저역통과 윈도우로 정의를 필터링할 수 있습니다. 평활화된 유사 위그너-빌 분포는 시간 및 주파수 평활화에 별개의 윈도우를 사용합니다.

SPWVDxg,H(t,f)=g(t)H(f)x(t+τ2)x*(tτ2)ej2πfτdτ.

참고 문헌

[1] Cohen, Leon. Time-Frequency Analysis: Theory and Applications. Englewood Cliffs, NJ: Prentice-Hall, 1995.

[2] Mallat, Stéphane. A Wavelet Tour of Signal Processing. Second Edition. San Diego, CA: Academic Press, 1999.

[3] O'Toole, John M., and Boualem Boashash. "Fast and Memory-Efficient algorithms for Computing Quadratic Time-Frequency Distributions." Applied and Computational Harmonic Analysis. Vol. 35, Number 2, 2013, pp. 350–358.

확장 기능

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

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

버전 내역

R2018b에 개발됨

모두 확장

참고 항목

함수

도움말 항목