2012-04-07 3 views
0

가속 프레임 워크 FFT 함수를 사용하여 사운드 샘플의 스펙트로 그램을 생성하고 있습니다. 이 부분은 훌륭하게 작동합니다. 그러나, 나는 스펙트럼을 직접 조작 (즉, 실수를 조작)하고 싶습니다. 역행렬을 다시 호출하려면 어떻게해야합니까? INVERSE 호출이 IMAGINARY 숫자의 배열을 기대하는 것처럼 보입니다.하지만 조작 된 실수로 어떻게 생성 할 수 있습니까? realp 배열을 내 실수로 만들고 imagp 부분을 0으로 만들려고 시도했지만 작동하지 않는 것 같습니다.Apple FFT Accelerate Framework 실수 번호 배열에서의 역 FFT

음성 오디오 샘플에서 FFT를 실행 한 다음 FFT를 다시 실행하고 엡 스토어의 낮은 부분을 들어 올리려고하므로 (음높이에서 보컬 트랙 구성 요소가 분리되기를 바랍니다) 그런 다음 역 FFT를 다시 실행하여 보컬 트랙터 (포먼트) 정보를 더 명확하게 보여주는 스펙트로 그램을 생성합니다 (즉, 피치 정보없이). 그러나, 나는 현실 배열 (cepstrum)에서 실제 배열 및 imagp에 0을 전달하는 역 FFT에 문제가있는 것 같습니다. 나는 여기서 뭔가 잘못하고 있다고 생각하며 결과는 예상치 못합니다.

답변

0

실제 크기가 아닌 복잡한 순방향 FFT 결과를 처리해야합니다. 그렇지 않으면 IFFT 결과 스펙트럼의 모양이 왜곡됩니다. 그것들을 허수라고 생각하지 말고 필요한 각도 위상 정보를 담고있는 2D 벡터의 일부라고 생각하십시오.

귀하의 엡트 립 리프터/필터가 실제 크기 만 변경하는 경우, 복잡한 IFFT를 수행하기 전에 실제 크기의 변화량을 스케일 인자로 사용하여 순방향 복합 FFT 결과를 변경할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. realp 및 imagp 부분을 모두 조절할 수 있습니까? 아니면 하나만 조절할 필요가 있습니까? 따라서 크기 변환에서 '위상 정보'로의 변환을 되돌릴 방법이 없습니까? – raeldor

+0

무언가의 길이는 가리키는 각도와 아무 관련이 없습니다. 위로 atan2()보세요. – hotpaw2

+0

알았습니다. 평신도의 관점에서 나를 분명하게 해줘서 고마워. :) – raeldor