2012-12-08 3 views
2

DFT의 복잡한 출력에는 이산 주파수에서 "진폭"및 "위상"정보가 모두 들어 있다는 것을 알고 있습니다.DFT 출력을 "제로 위상 조정"하는 방법은 무엇입니까?

Amplitude[n] = sqrt((r[n]*r[n]) + (i[n]*i[n])) 
Phase[n] = (atan2(i[n],r[n])) 
Frequency[n] = n * (sample_rate/(fft_input_length/2)) 

은 해당 주파수에서의 입력의 FFT 입력에 0 상 배향을 가진 것처럼 I 각 출력 빈의 크기를 계산하는 주파수, 진폭 및 위상 정보를 이용할 수 있어야한다는 것 . 그러나 나는 빈 그림을 그리고있다.


흠, 내 문제를 깊이 파고 들자면, 입력에 관계없이 FFT 출력의 가상 포션은 항상 0.0이라는 것을 알았습니다. 따라서 코드에 결함이 있거나 알고리즘이 필요하지 않다고 추측합니다.

+1

질문이 맞지 않습니다. 위의 주어진 빈에서 진폭에 대한 표현식을 이미 사용하고 계십니까? –

+0

사실, 진폭 값은 위상의 영향을 받아야합니다. 예를 들어, 동일한 주파수와 진폭의 두 개의 사인파 신호를 생성하지만 두 번째 신호의 위상을 이동하면 FFT 출력에서 ​​계산 된 진폭이 달라지지 않습니까? 그게 내 검사의 경우 인 것 같습니다. 아마 나는 코드에 결함이있다. –

+0

동일한 주파수에서 두 개의 사인파를 결합하면 새로운 진폭과 위상을 가진 동일한 주파수의 사인파가 하나 생성됩니다.이 두 사인파는 동일한 주파수에 있기 때문에 분리 할 수 ​​없습니다. –

답변

2

시작 (샘플 0)을 참조하여 모든 DFT 결과 빈을 0의 위상으로 회전하려면 다음과 같이하십시오. set r [n] = amplitude [n], i [n] = 0; 엄격한 실제 데이터를 원한다면 r [n]이 전체 DFT 길이에 대해 대칭인지 확인하십시오. 필요한 경우 IDFT를 계산합니다.

+0

나는 내가 지금 필요한 것을 해결할 수 있다고 생각한다. 많은 감사합니다. –