Python FFT 합성 파형 의 인 스 턴 스
가 져 오기 모듈
import numpy as np
import matplotlib.pyplot as plt
각각 주기 적 인 방 파 와 삼각 파 프로그램 이 생 긴 다.
# size , 1
def triangle_wave(size):
x = np.arange(0, 1, 1.0/size)
y = np.where(x<0.5, x, 0)
y = np.where(x>=0.5, 1-x, y)
return x, y
def square_wave(size):
x = np.arange(0, 1, 1.0/size)
y = np.where(x<0.5, 1.0, 0)
return x, y
그 중에서 np.where 함수 의 두 번 째 값 은 if 이 고 세 번 째 값 은 else 입 니 다.다음 프로그램 은 대응 하 는 스펙트럼 을 계산 할 수 있 습 니 다.샘플링 포 인 트 는 2 의 n 차 멱 으로 하 는 것 은 FFT 계산 에 편리 하도록 하 는 것 입 니 다.
fft_size = 256
# FFT
x, y = triangle_wave(fft_size)
fy = np.fft.fft(y) / fft_size
다음은 계 산 된 스펙트럼 을 시각 화하 고 주파수 에 대응 하 는 강 도 는 공사 에서 자주 사용 하 는 데시벨 dp 로 표시 합 니 다.
# FFT 20 , 0,
# log , , np.clip ,
plt.figure()
plt.plot(np.clip(20*np.log10(np.abs(fy[:20])), -120, 120), "o")
plt.xlabel("frequency bin")
plt.ylabel("power(dB)")
plt.title("FFT result of triangle wave")
다음은 사인 과 코사인 함수 로 신 호 를 합성 한다.
# FFT freqs n , , loops
def fft_combine(freqs, n, loops=1):
length = len(freqs) * loops
data = np.zeros(length)
index = loops * np.arange(0, length, 1.0) / length * (2 * np.pi)
for k, p in enumerate(freqs[:n]):
if k != 0: p *= 2 # , *2
data += np.real(p) * np.cos(k*index) #
data -= np.imag(p) * np.sin(k*index) #
return index, data
그 중에서 index 는 스펙트럼 공간의 샘플링 점 을 대표 한다.합성 신 호 를 그 려 서 x 좌 표 는 기본 정수 로 표시 하면 됩 니 다.
# , x
plt.figure()
plt.plot(y, label="original triangle", linewidth=2)
for i in [0,1,3,5,7,9]:
index, data = fft_combine(fy, i+1, 2) #
plt.plot(data, label = "N=%s" % i)
plt.legend()
plt.title("partial Fourier series of triangle wave")
plt.show()
이 파 이 썬 FFT 합성 파형 의 인 스 턴 스 는 바로 소 편 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 많은 응원 부 탁 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.