03파형 수학 · 코히어런스

코히어런스 MATLAB 자료

파형 관계를 이해하기 위한 수학 과정의 2번째 주제에 포함된 강의입니다.

MATLAB®은 Welch 방법을 사용하여 여러 통계 추정기를 지원하는 연산자를 제공합니다. 여기에는 다음이 포함됩니다.

msco여기(…)

일반적인 코히어런스를 추정합니다.

펠치(…)

전력 스펙트럼 밀도를 추정합니다.

cpsd(…)

교차 전력 스펙트럼 밀도를 추정합니다.

MATLAB의 예제 코드

복소 코히어런스는 아래에 설명된 대로 CSD(교차 스펙트럼 밀도)와 PSD(전력 스펙트럼 밀도)를 사용하여 MATLAB에서 계산할 수 있습니다.

  clear                              % clear all variables
  format long g;                     % set format of text output
  N = 16;                            % length of input data sequence x
  Fs = 1;                            % sample rate (used for scaling)
  percent = 50;                      % percent overlap
  Nfft = N * (1-percent/100);
  x= [0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0]';
  y= [0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0]';
%   0        3          7              11  13  15
%----------------------------------------------------------------------------
% smoothing window
%----------------------------------------------------------------------------
  window = hanning(Nfft);            % Hanning       window
%----------------------------------------------------------------------------
% calculate estimates
%----------------------------------------------------------------------------
[Sxy,freq]=cpsd(    x,y,window,Noverlap,Nfft,Fs);  % estimate Sxy
[Sxx,freq]=pwelch(  x,  window,Noverlap,Nfft,Fs);  % estimate Sxx
[Syy,freq]=pwelch(    y,window,Noverlap,Nfft,Fs);  % estimate Syy
[Cms,freq]=mscohere(x,y,window,Noverlap,Nfft,Fs);  % estimate ordinary coherence
% |      |    |     | |  |        |       |   |_____ sample rate
% |      |    |     | |  |        |       |_________ estimate length
% |      |    |     | |  |        |_________________ num. overlapping positions
% |      |    |     | |  |__________________________ window type
% |      |    |     | |_____________________________ data sequence y
% |      |    |     |_______________________________ data sequence x
% |      |    |_____________________________________ estimation operation
% |      |__________________________________________ x-axis sequence
% |_________________________________________________ estimate sequence
Cxy = Sxy ./ sqrt( Sxx .* Syy );                   %  estimate complex coherence
%----------------------------------------------------------------------------
% perform integrity check
%----------------------------------------------------------------------------
if norm(Cms-abs(Cxy).^2)<1e-12
   fprintf("Cxy integrity check OK!n");
else
   fprintf("Cxy integrity check FAILED!!!n");
end

주의 사항

이름에서 알 수 있듯이 추정기는 추정치를 산출합니다. 일반적으로 이러한 추정에는 실제 값과 관련하여 약간의 오류가 포함되어 있습니다.

이 상황에 대한 K=1 Welch의 코히어런스 추정보다 더 놀라운 예를 찾는 것은 어려울 것입니다. 이를 이해하려면 직사각형 창 K=1 Welch의 코히어런스 추정값과 상관되지 않은 백색 잡음 신호의 실제 코히어런스를 비교하십시오.

만약:

  1. x[n] 및 y[n]은 평균 0의 백색 잡음 시퀀스입니다.
  2. x[n]과 y[n]은 상관 관계가 없습니다.
  3. 추정값 Ĉxy(w)는 x와 y의 K=1 Welch 추정값입니다.

그런 다음:

(1) \begin{방정식*} \hat{C}_{xy}(\omega)=1 \end{방정식*}

증거:

(2) \begin{방정식*} |C(\omega)|=\left|\frac{S_{xy}}{\sqrt{S_{xx}S_{yy}}}\right| \end{등식*}

(3) \begin{방정식*} =\left|\frac{(\tilde{F}x)(\tilde{F}y)^*}{\sqrt{|\tilde{F}x|^2|\tilde{F}y|^2}}\right| \end{등식*}

(4) \begin{방정식*} =1 \end{방정식*}

따라서 K=1 Welch의 코히어런스 추정치는 항상 1입니다! 이것은 확실히 추정치입니다. 하지만 문제는 “그것이 좋은 추정인가?”이다.

이 질문에 대답하기 위해 실제(추정되지 않은) 코히어런스를 계산해 보겠습니다.

(5) \begin{방정식*} |C_{xy}(\omega)|\triangleq|\tilde{F}[R_{xy}(m)]| \end{등식*}

코히어런스 C의 정의에 따라xy(ω)

(6) \begin{방정식*} \triangleq|\tilde{F}\mathbf{E}[x(n)y(n+m)]| \end{등식*}

상호 상관 R의 정의에 따라xy

(7) \begin{방정식*} =|\tilde{F}(\mathbf{E}[x(n)]\mathbf{E}[y(n+m)])| \end{등식*}

x[n]과 y[n]은 상관 관계가 없기 때문입니다.

(8) \begin{방정식*} =|\tilde{F}(0\times0)| \end{등식*}

x[n]과 y[n]의 평균은 0이기 때문입니다.

(9) \begin{방정식*} Cxy(\omega)=0 \end{방정식*}

0의 푸리에 변환은 0이기 때문입니다.

따라서 코히어런스의 실제 값은 Cxy(Ω)= 0(가능한 가장 작은 값)이지만 Welch 추정값은 Ĉxy(Ω)= 1(가능한 가장 큰 값)임을 알 수 있습니다. 대부분의 경우 Welch는 매우 "좋은" 추정치를 산출할 가능성이 높습니다. 그러나 위의 예에서 알 수 있듯이 항상 그런 것은 아니며 몇 가지 주의가 필요합니다.

ASK AN ENGINEER

시험 조건을 실제 장비에 적용해 보세요.

시편 정보와 목표 조건을 보내주시면 시험 가능 여부를 검토합니다.

시험 조건 문의