문제 설명
필자는 컨볼 루션을 효율적으로 계산하기 위해 회선 정리를 사용했습니다. 길이가 N
인 두 개의 실제 신호 s1
과 s2
이 있다고 가정합니다. I는 fft_size
가 순환 중복을 피하기 위해n 배 FFT 컨볼 루션 및 순환 오버랩
fft_size = int(2 ** np.ceil(np.log2(k * size - 1)))
를 판독하도록 수정되어야 k
singals이 경우 I 그러나
import numpy as np
import numpy.fft as fft
size = len(s1)
fft_size = int(2 ** np.ceil(np.log2(2 * size - 1))) #The size for the FFT algorithm
S1 = fft.rfft(s1, fft_size) #Take FTs
S2 = fft.rfft(s2, fft_size)
convolution = fft.irfft(S1 * S2) #Take IFT
에서 컨볼 루션을 얻을 수있다.
불행히도, 나는 선험적으로 k
을 모른다. 하나의 옵션은 최대 값 k_max
을 선택하는 것이지만 절대적으로 필요하지 않으면 많은 양의 메모리를 사용할 필요가 없으며 k 변경이있을 때마다 FT를 다시 평가하지 않는 것이 좋습니다.
질문
는 다음과 같은
- 중 하나를 수행하는 것이 가능 필요에 따라
k=1
에 대한 신호 "푸리에 공간에서 제로 패드 '의 FFT를 타고? - FFT에서 순환 포장을 방지 하시겠습니까? 주파수 도메인에서