Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

pmusic

MUSIC 알고리즘을 사용하는 의사스펙트럼(Pseudospectrum)

설명

예제

[S,wo] = pmusic(x,p)는 다중 신호 분류(MUSIC) 알고리즘을 구현하여 입력 신호 x의 의사스펙트럼 추정값을 S에 반환하고, 의사스펙트럼이 계산된 정규화 주파수(단위: rad/sample)를 벡터 wo에 반환합니다. 입력 인수 p를 사용하여 신호 부분공간 차원을 지정할 수 있습니다.

[S,wo] = pmusic(x,p,wi)는 벡터 wi에 지정된 정규화 주파수에서 의사스펙트럼을 계산합니다. 벡터 wi는 적어도 2개의 요소를 가져야 합니다. 그러지 않으면 함수가 w를 nfft로 해석합니다.

[S,wo] = pmusic(___,nfft)는 의사스펙트럼을 추정하는 데 사용되는, FFT의 정수 길이 nfft를 지정합니다. 이 구문은 위에 열거된 구문에 사용할 수 있습니다.

예제

[S,wo] = pmusic(___,'corr')은 입력 인수 x를 신호 데이터로 구성된 행렬이 아닌 상관 행렬로 강제로 해석합니다. 이 구문에서 x는 정사각 행렬이어야 하고, 이 행렬의 고유값은 모두 음이 아니어야 합니다.

예제

[S,fo] = pmusic(x,p,nfft,fs)는 벡터 fo(단위: Hz)에 지정된 주파수에서 의사스펙트럼을 계산하여 반환합니다. 샘플 레이트 fs(단위: Hz)를 입력합니다.

[S,fo] = pmusic(x,p,fi,fs)는 벡터 fi에 지정된 주파수에서 의사스펙트럼을 계산하여 반환합니다. 벡터 fi는 적어도 2개의 요소를 가져야 합니다. 그러지 않으면 함수가 w를 nfft로 해석합니다.

예제

[S,fo] = pmusic(x,p,nfft,fs,nwin,noverlap)은 윈도우 nwin 및 중첩 길이 noverlap을 사용하여 입력 데이터 x를 분할하는 방식으로 의사스펙트럼 S를 반환합니다.

[___] = pmusic(___,freqrange)는 포함시킬 주파수 값 범위를 fo 또는 wo에 지정합니다.

[___,v,e] = pmusic(___) 은 잡음 고유벡터를 행렬 v에 반환하고 관련 고유값을 벡터 e에 반환합니다.

예제

pmusic(___)(출력 인수 없음)은 현재 Figure 창에 의사스펙트럼을 플로팅합니다.

예제

모두 축소

이 예제에서는 신호 부분공간에 실수 정현파 성분이 두 개 있다는 가정 하에 신호 벡터 x를 분석합니다. 이 경우 신호 부분공간의 차원이 4입니다. 각 실수 정현파가 복소수 지수 두 개의 합이기 때문입니다.

n = 0:199;
x = cos(0.257*pi*n) + sin(0.2*pi*n) + 0.01*randn(size(n));
pmusic(x,4)      % Set p to 4 because there are two real inputs

Figure contains an axes. The axes with title Pseudospectrum Estimate via MUSIC contains an object of type line.

이 예제에서는 고유값 차단 임계값을 최솟값보다 10% 높은 값으로 설정하고 동일한 신호 벡터 x를 분석합니다. p(1) = Inf를 지정하면 신호/잡음 부분공간이 강제로 임계값 파라미터 p(2)를 기준으로 결정됩니다. nwin 인수를 사용하여 길이가 7인 고유벡터를 지정하고 샘플링 주파수 fs를 8kHz로 설정합니다.

rng default
n = 0:199;
x = cos(0.257*pi*n) + sin(0.2*pi*n) + 0.01*randn(size(n));
[P,f] = pmusic(x,[Inf,1.1],[],8000,7); % Window length = 7
plot(f,20*log10(abs(P)))
xlabel 'Frequency (Hz)', ylabel 'Power (dB)'
title 'Pseudospectrum Estimate via MUSIC', grid on

Figure contains an axes. The axes with title Pseudospectrum Estimate via MUSIC contains an object of type line.

스펙트럼 밀도를 추정하기 위해 양의 정부호 상관 행렬 R을 지정합니다. 디폴트 값인 샘플 256개를 사용합니다.

R = toeplitz(cos(0.1*pi*(0:6))) + 0.1*eye(7);
pmusic(R,4,'corr')

Figure contains an axes. The axes with title Pseudospectrum Estimate via MUSIC contains an object of type line.

corrmtx를 사용하여 데이터에서 생성한 신호 데이터 행렬 Xm을 입력합니다.

n = 0:699;
x = cos(0.257*pi*(n)) + 0.1*randn(size(n));
Xm = corrmtx(x,7,'modified');
pmusic(Xm,2)

Figure contains an axes. The axes with title Pseudospectrum Estimate via MUSIC contains an object of type line.

동일한 신호를 사용하되 이번에는 pmusic을 통해 윈도우 생성 입력 인수를 사용하여 100×7 데이터 행렬을 구성합니다. 또한 FFT 길이를 512로 지정합니다.

n = 0:699;
x = cos(0.257*pi*(n)) + 0.1*randn(size(n));
[PP,ff] = pmusic(x,2,512,[],7,0);
pmusic(x,2,512,[],7,0)

Figure contains an axes. The axes with title Pseudospectrum Estimate via MUSIC contains an object of type line.

입력 인수

모두 축소

입력 신호로, 벡터나 행렬로 지정됩니다. x가 벡터이면 신호에 대한 1회 관측값으로 처리됩니다. x가 행렬인 경우 x의 각 행은 신호에 대한 별도의 관측값을 나타냅니다. 예를 들어, 배열 처리에서처럼 x'*x가 상관 행렬의 추정값이 되도록 각 행이 센서로 구성된 배열의 출력값 하나에 해당합니다.

참고

corrmtx 출력값을 사용하여 x를 생성할 수 있습니다.

복소수 지원 여부:

부분공간 차원으로, 양의 실수형 정수 또는 요소를 2개 가진 벡터로 지정됩니다. p가 양의 실수형 정수일 경우 부분공간 차원으로 처리됩니다. p가 요소가 2개인 벡터일 경우 p의 두 번째 요소는 신호의 상관 행렬에 대해 추정되는 최소 고유값인 λmin을 곱한 임계값을 나타냅니다. 임계값 λmin*p(2) 미만의 고유값이 잡음 부분공간에 할당됩니다. 이 경우 p(1)이 신호 부분공간의 최대 차원을 지정합니다. p의 두 번째 요소에 임계값 파라미터를 추가로 지정하면 잡음 부분공간과 신호 부분공간을 더 유연하고 세밀하게 할당할 수 있습니다.

참고

peig에 대한 입력값이 실수 정현파일 경우, p의 값을 정현파 개수의 두 배가 되도록 설정하십시오. 입력값이 복소수 정현파일 경우 p를 정현파 개수와 동일하게 설정하십시오.

복소수 지원 여부:

입력 정규화 주파수로, 벡터로 지정됩니다.

데이터형: double

DFT를 적용할 지점의 개수로, 양의 정수로 지정됩니다. nfft가 빈 값으로 지정되면 디폴트 nfft가 사용됩니다.

샘플 레이트로, 양의 스칼라(단위: Hz)로 지정됩니다. fs를 빈 벡터 []로 지정할 경우 샘플 레이트는 디폴트 값 1Hz로 설정됩니다.

입력 주파수로, 벡터로 지정됩니다. 의사스펙트럼은 벡터에 지정된 주파수에서 계산됩니다.

사각 윈도우의 길이로, 음이 아닌 정수로 지정됩니다.

중첩 샘플의 개수로, 윈도우 길이보다 작은 음이 아닌 정수로 지정됩니다.

참고

구문에 'corr'을 포함시키면 인수 nwinnoverlap은 무시됩니다.

의사스펙트럼 추정값의 주파수 범위로, 'half', whole, 'centered' 중 하나로 지정됩니다.

  • 'half' — 실수 입력 신호 x의 스펙트럼의 절반을 반환합니다. nfft가 짝수이면 S의 길이는 nfft/2 + 1이고 구간 [0,π]에 대해 계산됩니다. nfft가 홀수이면 S의 길이는 (nfft + 1)/2이고 주파수 구간은 [0,π)입니다. fs를 지정할 경우 nfft가 짝수이면 구간은 [0,fs/2)이고, 홀수이면 [0,fs/2]입니다.

  • 'whole' — 실수 입력값이거나 복소수 입력값인 x의 전체 스펙트럼을 반환합니다. 이 경우, S의 길이는 nfft이고 [0, 2π) 구간에 대해 계산됩니다. fs를 지정하면 주파수 구간은 [0,fs)입니다.

  • 'centered' — 실수 입력값 또는 복소수 입력값 x에 대해 중심이 맞춰진 전체 스펙트럼을 반환합니다. 이 경우 S의 길이는 nfft이며, nfft가 짝수이면 구간 (–π,π]에 대해 계산되고 nfft가 홀수이면 구간 (–π,π)에 대해 계산됩니다. fs를 지정할 경우 nfft가 짝수이면 주파수 구간은 (–fs/2,fs/2]이고, 홀수이면 (–fs/2,fs/2)입니다.

참고

인수 freqrange 또는 'corr'은 입력 인수 목록에서 p 다음의 어느 위치에나 입력할 수 있습니다.

출력 인수

모두 축소

의사스펙트럼 추정값으로, 벡터로 반환됩니다. 의사스펙트럼은 입력 데이터 x와 관련된 상관 행렬의 고유벡터 추정값을 사용하여 계산됩니다.

출력 정규화 주파수로, 벡터로 지정됩니다. Swo는 길이가 같습니다. 일반적으로, FFT 길이와 입력 인수 x의 값에 따라 S의 길이와 해당 정규화 주파수의 범위가 결정됩니다. 이 표에는 첫 구문에 대한 S(및 wo) 길이와 이에 상응하는 정규화 주파수 범위가 나와 있습니다.

FFT 길이가 256(디폴트 값)인 S 특성

입력 데이터형S 및 w0 길이상응하는 정규화 주파수 범위

실수

129

[0, π]

복소수

256

[0, 2π)

nfft이 지정된 경우 다음 표에서 Swo의 길이 그리고 wo에 대한 주파수 범위를 확인할 수 있습니다.

S와 주파수 벡터 특성

입력 데이터형nfft 짝수 또는 홀수S 및 w 길이w 범위

실수

짝수

(nfft/2 )+ 1

[0, π]

실수

홀수

(nfft + 1)/2

[0, π)

복소수

짝수 또는 홀수

nfft

[0, 2π)

출력 주파수로, 벡터로 반환됩니다. fo의 주파수 범위는 nfft, fs, 입력 인수 x의 값에 따라 달라집니다. S(및 fo) 길이는 위의 S와 주파수 벡터 특성에 나온 것과 동일합니다. 다음 표는 nfftfs이 지정되었을 때의 fo 주파수 범위를 보여줍니다.

S와 주파수 벡터 특징(fs 지정 시)

입력 데이터형

nfft(홀수 또는 짝수)

f 범위

실수

짝수

[0, fs/2]

실수

홀수

[0, fs/2)

복소수

짝수 또는 홀수

[0, fs)

또한 nwinnoverlap도 지정된 경우, 입력 데이터 x를 분할하고 윈도우를 적용한 다음, 상관 행렬 고유값을 추정하는 데 사용되는 행렬을 형성합니다. 데이터 분할은 nwin, noverlapx 형식에 따라 달라집니다. 아래 표에는 윈도우가 적용되는 세그먼트에 대한 설명이 나와 있습니다.

x와 nwin에 따른 윈도우 적용 데이터

x 형식

nwin 형식

윈도우가 적용되는 데이터

데이터 벡터

스칼라

길이가 nwin

데이터 벡터

계수로 구성된 벡터

길이가 length(nwin)

데이터 행렬

스칼라

데이터에 윈도우가 적용되지 않음

데이터 행렬

계수로 구성된 벡터

length(nwin)x의 열 길이와 동일해야 하고, noverlap이 사용되지 않음

이 구문 관련 정보는 입력 데이터와 구문에 따른 고유벡터 길이 항목을 참조하십시오.

잡음 고유벡터로, 행렬로 반환됩니다. v 열은 차원이 size(v,2)인 잡음 부분공간까지 확장됩니다. 신호 부분공간의 차원은 size(v,1)-size(v,2)입니다.

상관 행렬의 추정된 고유값으로, 벡터로 반환됩니다.

의사스펙트럼을 추정하는 과정에서 pmusic은 신호의 상관 행렬에 대해 추정된 고유벡터 vj 와 고유값 λj를 사용하여 잡음과 신호 부분공간을 계산합니다. 그러한 고유값 중 가장 작은 값이 임계값 파라미터 p(2)와 함께 사용되어, 잡음 부분공간 차원에 영향을 미치는 경우가 있습니다.

pmusic에 따라 계산된 고유벡터의 길이 n은 신호 부분공간 차원과 잡음 부분공간 차원의 합으로 구성됩니다. 이 고유벡터 길이는 입력값(신호 데이터 또는 상관 행렬)과 사용하는 구문에 따라 달라집니다.

다음 표에는 고유벡터 길이가 입력 인수에 따라 어떻게 달라지는지 간략히 요약되어 있습니다.

입력 데이터와 구문에 따른 고유벡터 길이

입력 데이터 x 형식

구문에 대한 설명

고유벡터 길이 n

행 벡터 또는 열 벡터

nwin이 정수 스칼라로 지정.

nwin

행 벡터 또는 열 벡터

nwin이 벡터로 지정.

length(nwin)

행 벡터 또는 열 벡터

nwin이 지정되지 않음.

2 × p(1)

l×m 행렬

nwin이 스칼라로 지정될 경우 사용되지 않음. nwin이 벡터로 지정될 경우 length(nwin)이 m과 동일해야 함.

m

m×m의 음이 아닌 정부호 행렬

'corr'이 지정되고 nwin은 사용되지 않음.

m

p(2) > 1을 적용하려면 nwin > p(1) 또는 length(nwin) > p(1)을 지정해야 합니다.

알고리즘

MUSIC(다중 신호 분류) 알고리즘은 Schmidt의 고유공간 분석 방법 [1]을 사용하여 신호 또는 상관 행렬에서 의사스펙트럼을 추정합니다. 또한 신호의 주파수 성분을 추정하기 위해 신호의 상관 행렬의 고유공간 분석을 수행합니다. 이 알고리즘은 특히 정현파의 합으로 구성되면서 가산성 백색 가우스 잡음(AWGN)을 갖는 신호에 적합합니다. 상관 행렬을 지정하지 않으면 신호의 상관 행렬의 고유값과 고유벡터가 추정됩니다.

MUSIC 의사스펙트럼 추정값은 다음 식으로 산출됩니다.

PMUSIC(f)=1eH(f)(k=p+1NvkvkH)e(f)=1k=p+1N|vkHe(f)|2

여기서 N은 고유벡터의 차원이고 vk 는 상관 행렬의 k차 고유벡터입니다. 정수 p는 신호 부분공간의 차원입니다. 따라서 합에 사용되는 고유벡터 vk 는 최소 고유값에 해당하며 해당 구간이 잡음 부분공간을 생성합니다. 벡터 e(f)가 복소수 지수로 구성되기 때문에 내적

vkHe(f)

는 푸리에 변환에 해당합니다. 이는 의사스펙트럼 추정값을 계산하는 데 사용됩니다. 각 vk 에 대해 FFT가 계산된 다음 크기 제곱이 합산됩니다.

참고 문헌

[1] Marple, S. Lawrence. Digital Spectral Analysis. Englewood Cliffs, NJ: Prentice-Hall, 1987, pp. 373–378.

[2] Schmidt, R. O. “Multiple Emitter Location and Signal Parameter Estimation.” IEEE® Transactions on Antennas and Propagation. Vol. AP-34, March, 1986, pp. 276–280.

[3] Stoica, Petre, and Randolph L. Moses. Spectral Analysis of Signals. Upper Saddle River, NJ: Prentice Hall, 2005.

확장 기능

R2006a 이전에 개발됨