Main Content

pyulear

자기회귀 파워 스펙트럼 밀도 추정값 — Yule-Walker 방법

설명

pxx = pyulear(x,order)는 이산시간 신호 x의 파워 스펙트럼 밀도 추정값 pxx를 Yule-Walker 방법으로 구하여 반환합니다. x가 벡터이면 단일채널로 처리됩니다. x가 행렬이면 PSD가 각 열에 대해 개별적으로 계산되어 pxx의 대응 열에 저장됩니다. pxx는 단위 주파수당 전력 분포입니다. 주파수는 rad/sample 단위로 표현됩니다. order는 PSD 추정값을 생성하는 데 사용되는 자기회귀(AR) 모델의 차수입니다.

pxx = pyulear(x,order,nfft)는 이산 푸리에 변환(DFT)에 포함된 nfft개 점을 사용합니다. 실수 x의 경우, nfft가 짝수이면 pxx의 길이가 (nfft/2 + 1)이고, nfft가 홀수이면 길이가 (nfft + 1)/2입니다. 복소수 값 x의 경우, pxx의 길이는 항상 nfft입니다. nfft를 생략하거나 빈 값으로 지정하면 pyulear은 DFT 길이의 디폴트 값인 256을 사용합니다.

[pxx,w] = pyulear(___)은 PSD가 추정된 정규화 각주파수 w의 벡터를 반환합니다. w의 단위는 rad/sample입니다. 실수 값을 갖는 신호의 경우 w의 구간은 nfft가 짝수이면 [0,π]이고, nfft가 홀수이면 [0,π)입니다. 복소수 값을 갖는 신호의 경우 w의 구간은 항상 [0,2π)입니다.

[pxx,f] = pyulear(___,fs)는 주파수 벡터 f를 반환합니다(단위: 단위 시간당 주기). 샘플 레이트 fs는 단위 시간당 샘플 개수입니다. 시간 단위가 초이면 f는 주기/초(Hz) 단위를 사용합니다. 실수 값을 갖는 신호의 경우, f의 구간은 nfft가 짝수이면 [0,fs/2]이고, nfft가 홀수이면 [0,fs/2)입니다. 복소수 값을 갖는 신호의 경우, f의 구간은 [0,fs)입니다. fspyulear에 대한 네 번째 입력값이어야 합니다. 샘플 레이트를 입력하고 위에 열거된 옵션 인수의 디폴트 값을 그대로 사용하려면 이 인수를 빈 값 []로 지정하십시오.

예제

[pxx,w] = pyulear(x,order,w)는 벡터 w에 지정된 정규화 주파수에서 양측 AR PSD 추정값을 반환합니다. 벡터 w는 적어도 2개의 요소를 가져야 합니다. 그러지 않으면 함수가 w를 nfft로 해석합니다.

[pxx,f] = pyulear(x,order,f,fs)는 벡터 f에 지정된 주파수에서 양측 AR PSD 추정값을 반환합니다. 벡터 f는 적어도 2개의 요소를 가져야 합니다. 그러지 않으면 함수가 f를 nfft로 해석합니다. f의 주파수는 단위 시간당 주기를 단위로 사용합니다. 샘플 레이트 fs는 단위 시간당 샘플 개수입니다. 시간 단위가 초이면 f는 주기/초(Hz) 단위를 사용합니다.

[___] = pyulear(x,order,___,freqrange)freqrange로 지정된 주파수 범위에 대한 AR PSD 추정값을 반환합니다. freqrange에 유효한 옵션은 'onesided', 'twosided' 또는 'centered'입니다.

[___,pxxc] = pyulear(___,'ConfidenceLevel',probability)는 PSD 추정값에 대한 probability × 100% 신뢰구간을 pxxc로 반환합니다.

pyulear(___)에 출력 인수를 지정하지 않으면 현재 Figure 창에 AR PSD 추정값(단위: 단위 주파수당 dB)을 플로팅합니다.

예제

예제

모두 축소

광의의 정상 AR(4) 확률 과정에 대한 구현을 생성합니다. Yule-Walker 방법을 사용하여 PSD를 추정합니다. 단일 구현에 기반한 PSD 추정값과 확률 과정의 실제 PSD를 비교합니다.

AR(4) 시스템 함수를 생성합니다. 주파수 응답을 가져오고 시스템의 PSD를 플로팅합니다.

A = [1 -2.7607 3.8106 -2.6535 0.9238];
[H,F] = freqz(1,A,[],1);
plot(F,20*log10(abs(H)))

xlabel('Frequency (Hz)')
ylabel('PSD (dB/Hz)')

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel PSD (dB/Hz) contains an object of type line.

AR(4) 확률 과정에 대한 구현을 생성합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 디폴트 설정으로 구성합니다. 구현의 길이는 1000개 샘플입니다. 샘플링 주파수는 1Hz라고 가정합니다. pyulear을 사용하여 4차 과정에 대한 PSD를 추정합니다. PSD 추정값과 실제 PSD를 비교합니다.

rng default

x = randn(1000,1);
y = filter(1,A,x);
[Pxx,F] = pyulear(y,4,1024,1);

hold on
plot(F,10*log10(Pxx))
legend('True Power Spectral Density','pyulear PSD Estimate')

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel PSD (dB/Hz) contains 2 objects of type line. These objects represent True Power Spectral Density, pyulear PSD Estimate.

가산성 N(0,1) 백색 가우스 잡음(AWGN)이 있는 3개의 정현파로 구성된 다중채널 신호를 생성합니다. 정현파 주파수는 100Hz, 200Hz, 300Hz입니다. 샘플링 주파수는 1kHz이고 신호의 지속 시간은 1s입니다.

Fs = 1000;

t = 0:1/Fs:1-1/Fs;

f = [100;200;300];

x = cos(2*pi*f*t)'+randn(length(t),3);

12차 자기회귀 모델에 Yule-Walker 방법을 사용하여 신호의 PSD를 추정합니다. 디폴트 DFT 길이를 사용합니다. 추정값을 플로팅합니다.

morder = 12;

pyulear(x,morder,[],Fs)

Figure contains an axes object. The axes object with title Yule-Walker Power Spectral Density Estimate, xlabel Frequency (Hz), ylabel Power/frequency (dB/Hz) contains 3 objects of type line.

입력 인수

모두 축소

입력 신호로, 행 벡터나 열 벡터 또는 행렬로 지정됩니다. x가 행렬이면, 이 행렬의 각 열은 독립적인 채널로 처리됩니다.

예: cos(pi/4*(0:159))+randn(1,160)은 단일채널 행 벡터 신호입니다.

예: cos(pi./[4;2]*(0:159))'+randn(160,2)는 2채널 신호입니다.

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

자기회귀 모델의 차수로, 양의 정수로 지정됩니다.

데이터형: double

DFT를 적용할 지점의 개수로, 양의 정수로 지정됩니다. 실수 값을 갖는 입력 신호 x의 경우, nfft가 짝수이면 PSD 추정값 pxx의 길이는 (nfft/2+1)이고, nfft가 홀수이면 길이는 (nfft+1)/2입니다. 복소수 값을 갖는 입력 신호 x의 경우, PSD 추정값은 항상 길이가 nfft입니다. nfft가 빈 값으로 지정되면 디폴트 nfft가 사용됩니다.

데이터형: single | double

샘플 레이트로, 양의 스칼라로 지정됩니다. 샘플 레이트는 단위 시간당 샘플 개수입니다. 시간 단위가 초이면 샘플 레이트의 단위는 Hz입니다.

정규화 주파수로, 적어도 2개의 요소를 가진 행 벡터나 열 벡터로 지정됩니다. 정규화 주파수는 rad/sample을 단위로 사용합니다.

예: w = [pi/4 pi/2]

데이터형: double | single

주파수로, 적어도 2개의 요소를 가진 행 벡터나 열 벡터로 지정됩니다. 주파수는 단위 시간당 주기를 단위로 사용합니다. 단위 시간은 샘플 레이트 fs로 지정됩니다. fs의 단위가 샘플/초이면 f는 Hz 단위입니다.

예: fs = 1000; f = [100 200]

데이터형: double | single

PSD 추정값의 주파수 범위로, 'onesided', 'twosided' 또는 'centered'로 지정됩니다. 디폴트 값은 실수 값을 갖는 신호의 경우 'onesided'이고, 복소수 값을 갖는 신호의 경우 'twosided'입니다. 각 옵션에 대응되는 주파수 범위는 다음과 같습니다.

  • 'onesided' — 실수 값을 갖는 입력 신호 x의 단측 PSD 추정값을 반환합니다. nfft가 짝수이면 pxx의 길이는 nfft/2 + 1이고 구간 [0,π] rad/sample에 대해 계산됩니다. nfft가 홀수이면 pxx의 길이는 (nfft + 1)/2이고 구간은 [0,π) rad/sample입니다. fs가 선택적으로 지정된 경우 이에 대응되는 구간은 짝수 길이와 홀수 길이 nfft 각각에 대해 [0,fs/2] cycles/unit time 및 [0,fs/2) cycles/unit time입니다.

    이 함수는 총 전력을 보존하기 위해 0 및 나이퀴스트 주파수를 제외한 모든 주파수에서 전력에 2를 곱합니다.

  • 'twosided' — 실수 값 또는 복소수 값 입력 x의 양측 PSD 추정값을 반환합니다. 이 경우, pxx의 길이는 nfft이고 구간 [0,2π) rad/sample에 대해 계산됩니다. fs가 선택적으로 지정된 경우 구간은 [0,fs) cycles/unit time입니다.

  • 'centered' — 실수 값 또는 복소수 값 입력 x에 대해 중심이 맞춰진 양측 PSD 추정값을 반환합니다. 이 경우, pxx의 길이는 nfft이며, nfft가 짝수 길이이면 구간 (–π,π] rad/sample에 대해 계산되며, nfft가 홀수 길이이면 구간 (–π,π) rad/sample에 대해 계산됩니다. fs가 선택적으로 지정된 경우 이에 대응되는 구간은 짝수 길이와 홀수 길이 nfft 각각에 대해 (–fs/2, fs/2] cycles/unit time 및 (–fs/2, fs/2) cycles/unit time입니다.

데이터형: char | string

실제 PSD에 대한 포함 확률로, (0,1) 범위의 스칼라로 지정됩니다. 출력값 pxxc는 실제 PSD에 대한 probability × 100% 구간 추정값의 하한과 상한을 포함합니다.

출력 인수

모두 축소

PSD 추정값으로, 음이 아닌 실수 값 열 벡터나 행렬로 반환됩니다. pxx의 각 열은 x의 대응하는 열에 대한 PSD 추정값입니다. PSD 추정값의 단위는 단위 주파수당 시계열 데이터의 크기 단위의 제곱을 사용합니다. 예를 들어, 입력 데이터의 단위가 볼트이면 PSD 추정값의 단위는 단위 주파수당 제곱 볼트입니다. 볼트 단위의 시계열에 대해, 저항이 1Ω인 것으로 가정하고 샘플 레이트를 헤르츠로 지정할 경우 PSD 추정값의 단위는 헤르츠당 와트입니다.

정규화 주파수로, 실수 값 열 벡터로 반환됩니다. pxx가 단측 PSD 추정값인 경우, w의 구간은 nfft가 짝수이면 [0,π]이고, nfft가 홀수이면 [0,π)입니다. pxx가 양측 PSD 추정값인 경우, w의 구간은 [0,2π)입니다. DC 기준 PSD 추정값의 경우, w의 구간은 nfft가 짝수이면 (–π,π]이고, nfft가 홀수이면 (–π,π)입니다.

주기적 주파수로, 실수 값 열 벡터로 반환됩니다. 단측 PSD 추정값의 경우, f의 구간은 nfft가 짝수이면 [0,fs/2]이고, nfft가 홀수이면 [0,fs/2)입니다. 양측 PSD 추정값의 경우, f의 구간은 [0,fs)입니다. DC 기준 PSD 추정값의 경우, f의 구간은 nfft가 짝수 길이이면 (–fs/2, fs/2] cycles/unit time이고, nfft가 홀수 길이이면 (–fs/2, fs/2) cycles/unit time입니다.

신뢰한계로, 실수 값 요소를 가진 행렬로 반환됩니다. 행렬의 행 크기는 PSD 추정값 pxx의 길이와 같습니다. pxxcpxx보다 두 배 더 많은 열을 가집니다. 홀수 열은 신뢰구간의 하한을 포함하고, 짝수 열은 상한을 포함합니다. 따라서 pxxc(m,2*n-1)은 추정값 pxx(m,n)에 대응하는 신뢰 하한이고 pxxc(m,2*n)은 추정값에 대응하는 신뢰 상한입니다. 신뢰구간의 포함 확률은 probability 입력값으로 결정됩니다.

데이터형: single | double

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

함수

도움말 항목