복잡한 반응 (및 정당화)을 평균화하는 방법은 무엇입니까?


11

입력 및 출력 신호의 FFT를 비교하여 시스템의 응답을 계산하는 소프트웨어를 개발 중입니다. 입력 및 출력 신호는 창으로 분할되며 각 창마다 신호가 중간 빼기되고 Hann 함수가 곱해집니다. 해당 창에 대한 계측기 응답은 처리 된 데이터의 FFT 비율입니다.

나는 위의 표준 절차라고 생각하지만, 잘 설명하지는 못합니다. 내 문제는 여러 창에서 응답을 결합하는 방법에 있습니다.

내가 알 수있는 한, 올바른 접근 방식은 모든 창에서 복잡한 값을 평균화하는 것입니다. 진폭 및 위상 응답은 각 주파수에서 평균의 복잡한 값의 진폭 및 위상입니다.

av_response = sum_windows(response) / n
av_amplitude = sqrt(real(av_response)**2 + imag(av_response)**2)
av_phase = atan2(imag(av_response), real(av_response))

주파수 빈에 대한 암시 적 루프.

그러나 각 창에서 진폭과 위상을 먼저 계산 한 다음 모든 창에서 진폭과 위상을 평균화하도록 이것을 변경하라는 요청을 받았습니다 .

amplitude = sqrt(real(response)**2 + imag(response)**2)
av_amplitude = sum_windows(amplitude) / n
phase = atan2(imag(response), real(response))
av_phase = sum_windows(phase) / n

예를 들어 평균 각도가 "정확하지 않기"때문에 이것이 잘못되었다고 주장했습니다. 예를 들어 평균 0과 360 도는 180입니다. 그러나 함께 일하는 사람들은 "OK, 우리는 진폭 만 표시합니다"라고 대답했습니다.

그래서 내 질문은 :

  • 두 번째 접근 방식이 일반적으로 진폭에도 올바르지 않다고 생각하는 것이 맞습니까?
  • 그렇다면 관련이있을 수있는 예외가 있습니까? 그리고 내가 함께 일하는 사람들이 두 번째 방법을 선호하는 이유를 설명 할 수있는 것은 무엇입니까? 예를 들어, 잡음이 작아 질수록 두 가지 접근 방식에 동의하는 것 같습니다. 아마도 이것이 저잡음에 대한 근사치일까요?
  • 두 번째 접근 방식이 올바르지 않은 경우이를 증명하는 데 사용할 수있는 설득력 있고 신뢰할만한 참조가 있습니까?
  • 두 번째 접근 방식이 올바르지 않은 경우 진폭에 대해이를 보여주는 좋은 이해하기 쉬운 예가 있습니까 (평균 0 및 360도 위상에 대해)?
  • 또는 내가 틀렸다 면 나 자신을 더 잘 교육시키는 좋은 책은 무엇입니까?

나는 평균 -1 1 -1 1 -1 -1의 평균값이 1이 아니라 0이어야한다고 주장하려했지만 설득력이 없었다. 시간이 지남에 따라 특정 노이즈 모델을 고려할 때 최대 가능성 추정을 기반으로 한 논증을 구성 할 수 있다고 생각하지만, 함께 일하는 사람들이들을 수있는 이유는 아닙니다. 따라서 내가 틀리지 않으면 권위의 강력한 논증이나 "명백한"시위가 필요합니다.

[태그를 추가하려고했지만 관련 태그를 찾을 수없고 새 사용자로 새 태그를 정의 할 수 없습니다-죄송합니다]


그들이 당신의 방법을 싫어하는 이유는 무엇입니까?
nibot

두 번째 방법으로 플롯하면 응답이 더 부드럽게 보입니다. 필자는이 사례를 살펴보면 유의미한 신호 (f는 높음)가없고 두 번째 접근 방식에서는 신호가 노이즈에서 "나타나도록"강제하기 때문이라고 생각합니다. 또한, 당신이 짐작할 수있는 다양한 정치 / 통신 문제들.
Andrew cooke

1
몇 가지 테스트 사례를 제공하려고 했습니까? 임의의 데이터를 취하여 알려진 주파수 응답이있는 일부 필터를 통해 필터링하십시오. 전달 함수 추정치가 알려진 전달 함수로 수렴되는지 확인하십시오.
nibot

아니. 나는하지 않았다. 좋은 제안입니다. 감사. 제대로 제시되면 설득력이 있음을 알 수있었습니다.
Andrew cooke

답변:


13

전달 함수 추정은 일반적으로 설명하는 방법과 약간 다르게 구현됩니다.

당신의 방법은 계산

F[y]F[x]

여기서 꺾쇠 괄호 은 데이터 세그먼트에 대해 취한 평균을 나타내며, 푸리에 변환 ( )을 수행 하기 전에 각 데이터 세그먼트에 윈도우 함수가 적용됩니다 .FF

보다 일반적인 구현은 x와 y의 스펙트럼 간 밀도 를 x의 전력 스펙트럼 밀도 로 나눈 값을 계산합니다 .

F[y]F[x]|F[x]|2=F[y]F[x]F[x]F[x]

여기서 는 점별 곱을 나타내며 복합 복소수입니다.

이것은 빈이 지나치게 작은 데이터 세그먼트의 영향을 줄이는 것이라고 생각합니다 .F[x]

일관되지 않은 추정

고용주는 다음을 사용하여 전달 함수를 추정 할 것을 제안했습니다.

|F[y]||F[x]|

이것은 작동 하지만 두 가지 큰 단점이 있습니다.

  1. 위상 정보가 없습니다.
  2. 입력 및 출력 대한 측정에 추가 노이즈가 있으면 전달 함수 추정이 정확하지 않습니다.xy

내가 설명한 방법과 방법은 일관된 평균 을 사용하여 이러한 문제를 피할 수 있습니다 .

참고 문헌

겹치는 평균 세그먼트를 사용하여 전력 스펙트럼 밀도를 계산하는 일반적인 아이디어를 Welch의 방법이라고 합니다. 전달 함수 를 추정하기 위해 이것을 사용하는 확장 은 Welch의 방법으로도 알려져 있지만 Welch의 논문에 언급되어 있는지 확실하지 않습니다. Welch의 논문을 찾는 것은 귀중한 자원 일 수 있습니다. 이 주제에 대한 유용한 논문은 Bendat and Piersol의 저서 인 Random Data : Analysis and Measurement Procedures 입니다.

확인

소프트웨어의 유효성을 검사하기 위해 가우시안 화이트 노이즈를 생성하고 알려진 전송 기능이있는 디지털 필터를 통해 공급하는 몇 가지 테스트 사례를 적용하는 것이 좋습니다. 입력 및 출력을 전달 함수 추정 루틴에 공급하고 추정값이 전달 함수의 알려진 값으로 수렴되는지 확인하십시오.


아! 감사합니다. 나는 이것을 조사 / 시도 할 것입니다.
앤드류 쿡

@nibot 여기서 정확히 사용되는 FFT 길이는 무엇입니까?
Spacey

당신은 어떤 길이를 사용할 수 있습니다. 길이는 해상도 및 내재적으로 (작업 할 고정 된 양의 데이터 제공) 평균 수를 결정합니다. fft가 길수록 해상도가 좋아 지지만 평균이 낮아 오류가 커집니다.
nibot

좋아, 또 다른 차이점은 <F (y) F * (x)> / <F (x) F * (x)>이고 Phonon에는 <F (y)> <F * (x)> / (< F (x)는> <F * AFAICT (X)는>) : O (
앤드류 쿡

<F * (x)>는 즉시 취소되므로 <F (y)> <F * (x)> / (<F (x)> <F * (x)>)를 계산할 필요가 없습니다. 내가 쓴대로 맞다고 생각합니다.
nibot

12

신호 처리에 오신 것을 환영합니다!

당신 말이 맞아요 DFT 크기와 위상, 특히 위상을 개별적으로 평균화 할 수는 없습니다. 다음은 간단한 데모입니다.

이라고하자 . 정의에 따라 크기 의 위상 는 다음과 같습니다.z=a+bi|z|zz

|z|=a2+b2
z=tan1(ba)

두 개의 복소수 값 및 의 평균 는zz1z2

z=z1+z22=a1+b1i+a2+b2i2=(a1+a2)+(b1+b2)i2

이 경우

|z|=(a1+a2)24+(b1+b2)24=12(a1+a2)2+(b1+b2)2a12+b12+a22+b222

또한,

z=tan1(b1a1)+tan1(b2a2)2tan1(2(b1+b2)2(a1+a2))

이러한 불평등의 정도를 비교하면 의 근사값을 말할 수 있습니다. 에 대한 근사값 은 완전히 의미가없는 2 차 항에 의해 해제됩니다 .|z|z

지금, 당신이하려는 일을하기 위해 다음을 제안합니다. 이론적으로 출력의 DFT를 입력의 DFT로 나누어 시스템의 임펄스 응답을 찾을 수 있습니다. 그러나 노이즈가있는 경우 매우 이상한 결과를 얻을 수 있습니다. 약간 더 나은 방법은 다음과 같은 이중 채널 FFT 임펄스 응답 추정을 사용하는 것입니다 (여기서는 제공되지 않지만 온라인에서 찾을 수 있음).

하자 , 의 DFT 인 - 차 (따라서 첨자 ) (첨자 따라서 입력 신호의 청크를 윈도 윙 위한 입력 ). 마찬가지로 출력 신호의 경우 . 신호는 단순히 윈도우 DFT의 평균 이라는 것을 알 수 있습니다 . 임펄스 응답 대한 통계적 듀얼 채널 FFT 근사 는 다음과 같이 주어진다.Gi(f)=Fi1(f)+Fi2(f)++FiN(f)NFik(f)kkiGo(f)=Fo1(f)+Fo2(f)++FoN(f)NGH^(f)H(f)

H^(f)=Go(f)Gi(f)|Gi(f)|2

여기서 는 복잡한 활용을 나타냅니다 (모든 가상 부품의 부호를 뒤집습니다).()


2
감사; 이 답변이나 니봇의 가장 좋은 답변으로 투표 할 지 확신이 없었습니다. 그들은 동일한 절차를 옹호하고 있다고 생각합니다. 따라서 도서 추천서와 함께 갔지만, 2 개의 투표권이 있다면 이것도 포함했을 것입니다 ...
Andrew cooke

1
@andrewcooke 네, 둘 다 똑같은 것을 옹호합니다. 이것이 당신과 당신 동료들을 위해 일을 정리하기를 바랍니다.
Phonon

그것은 나를 위해 큰 도움이되었습니다 (다시 감사합니다). 월요일에 나는 (1) 제안 된 방법을 구현하고 (2) 세 가지 모두에 대해 알려진 (합성) 데이터와 비교할 것을 제안 할 것이다. 그렇다면 최선의 접근 방식이 이길 것입니다 : o)
Andrew cooke

@Phonon 여기서 FFT를 계산하기 위해 어떤 FFT 길이를 사용하고 있습니까? length_of_signal + max_length_of_channel + 1?
Spacey

@Mohammad 적어도 예상되는 지연 시간의 두 배가되어야합니다. 이는 DFT의 원형 대칭으로 인한 것이므로 결과에 인과 관계와 비인 과적 지연 값이 모두 있습니다.
Phonon

3

이것은 FFT 스펙트럼의 코 히어 런트와 코 히어 런트 평균의 차이입니다. 코 히어 런트 평균은 분석에서 랜덤 노이즈를 거부 할 가능성이 높습니다. 비 간섭은 임의 노이즈 크기를 강조 할 가능성이 높습니다. 이 중 어느 것이 결과 보고서에 더 중요합니까?


그들이 다른 결과를 주면 나는 편견없는 추정을 원한다고 생각합니다. 편견이 있습니까?
Andrew cooke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.