로그 간격 전력 스펙트럼을 어떻게 계산할 수 있습니까?


20

주파수가 로그 간격으로있는 전력 스펙트럼을 계산하고 싶습니다.

에서는 웰치있어서 절충 얻어진 파워 스펙트럼의 주파수 분해능과 평균의 수 (즉, 결과의 오차) 사이에 존재한다. 이 트레이드 오프가 역동적이기를 원합니다. 즉, 저주파에서 더 정밀한 해상도를 얻기 위해 저주파 포인트에 대해 평균을 줄입니다.

이 작업을 수행하는 표준 방법이 있습니까?

한 가지 방법은 처음에는 pwelch매우 높은 해상도 (낮은 평균 수)로 수행 한 다음 로그 비닝을 사용하여 결과 스펙트럼을 리 바인드하는 것입니다.


2
나는 보통 정규 스펙트럼을 계산 한 다음 간단히 로그 스케일로 데이터를 플로팅합니다. DFT의 수정 된 정의를 직접 사용하지 않고서도 확실하지는 않지만 실제로 방법이 있는지 알고 싶습니다.
Phonon

관심있는 사람들을위한 OP의 관련 SO 질문 .
Lorem Ipsum

SO에 관한 또 다른 관련 질문 : stackoverflow.com/questions/9849233/…
nibot

답변:


9

이 질문을 직접 다루는 논문을 찾았습니다.

논문의 처음 몇 그림은이 알고리즘으로 해결되는 문제를 잘 설명하고 있으며 참고 문헌에는 다른 접근법 (상수 Q 변환, 강화 푸리에 변환, 설문 조사 기사 등)의 유용한 참고 문헌이 포함되어 있습니다.

이들의 접근 방식은 기존 FFT 기반 전력 스펙트럼 추정의 출력을 리 바인딩하는 것이 아니라 관심있는 (논리 간격) 주파수에서 이산 푸리에 변환 만 계산하는 것입니다. 각 주파수를 추정하기 위해 기본적으로 Welch의 알고리즘을 구현하지만 각 주파수에 대해 특별히 선택된 변환 길이 (및 평균 수)를 사용합니다. 각 주파수 빈의 계산은 전체 시계열을 사용하지만 다르게 세그먼트 화됩니다. 결과는 분해능 (빈 폭)이 주파수의 부드러운 함수라는 바람직한 특성을 가지며, 결과는 전력 스펙트럼 밀도 또는 전력 스펙트럼으로 교정 될 수 있습니다.

여기 Matlab 구현 : https://github.com/tobin/lpsd

여기에 이미지 설명을 입력하십시오 공개 :이 논문의 저자는 나와 같은 기관에 있습니다.


1
이런 방식으로 스펙트럼을 계산하면 어떤 이점이 있습니까? 이 방법의 동기는 무엇입니까?
Spacey

1
FFT를 사용하여 전력 스펙트럼을 계산 한 다음 일부 상황에서 리비 닝하는 것보다 빠를 수 있습니다.
nibot

파이썬 구현을 시작했습니다 : github.com/rudolfbyker/lpsd 여전히 테스트가 필요합니다. 기부를 환영합니다.
rudolfbyker

1

이 경우 최소 제곱 법 을 사용하여 알려진 값 목록의 빈도를 계산합니다. 가장 일반적인 방법은 Lomb 방법입니다. FFT 또는 DFT와 매우 유사하게 작동하지만 결정된 주파수 당 주파수 만 계산하며 문제가있는 경우 누락 된 데이터를 처리 할 수 ​​있습니다. 아이디어는 다음과 같습니다.

  1. j엑스j

엑스(ω)=12([j엑스j코사인ω(jτ)]2j코사인2ω(jτ)+[j엑스jω(jτ)]2j2ω(jτ))

이것은 FFT만큼 확장되지 않으므로 원하는 주파수의 수가 모든 데이터를 수집하는 데 필요한 FFT보다 훨씬 낮은 경우에만이 작업을 수행합니다.

그렇지 않으면 보간 방법이나 FFT 또는 DFT의 다른 리샘플링을 수행 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.