Python

파이선 파형 그래프 작성 기초예제

coding art 2021. 12. 26. 14:19
728x90

위 그림에서 처럼 사각형 모양의 특징을 가지는 파형을 duty  파형이라고 하며 scipy 라이브러리를 사용하여 생성이 가능하다. 듀타 파형도 사인파형이나 코사인파형과 같이 기본 주파수를 가질 수 있으나 이 파형을 퓨리에 급수로 계산해 보면 파형의 기본 주파수의 정수배에 해당하는 파형들의 선형 결합으로 이루어짐을 알 수 있다.

이 파형 작도를 위해서는 다음과같이 signal, numpy 및 matplotlib 가 필요함을 알 수 있으며 signal.square에서 2 * np.pi * 0.01 * t 의 0.01이 주파수 f에 해당함을 알 수 있다.

#duty_generation

from scipy import signal
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0, 300, 500, endpoint=False)
plt.plot(t, signal.square(2 * np.pi * 0.01 * t))               
plt.ylim(-2, 2)

 

이와는 달리 numpy 라이브러리의 지원을 받아 2개의 주파수로 구성되는 cosine 파형을 작도해 보자. 이파형의 스펙트럼 파형은 60Hz 와 120 Hz 에서 진폭 값을 가지는 스펙트럼을 보여주게 된다. 이에 관해서는 matplotlib animation 블로그들을 참조하기 바란다.

 

 

#cosinewave_generation

import matplotlib.pyplot as plt
import numpy as np
import math

Fs = 1000                    # Sampling frequency
dt = 1/Fs                     # Sample interval time
te= 0.5                     # End of time
t = np.arange(0, te, dt)   # Time vector

noise = np.random.normal(0,0.05,len(t))
x = 0.6*np.cos(2*np.pi*60*t+np.pi/2) + np.cos(2*np.pi*120*t)
y = x # + noise     # Sinusoids plus noise

plt.figure(num=1,dpi=100,facecolor='white')
plt.plot(t,y,'r')
plt.xlim( 0, 0.05)
plt.xlabel('time($sec$)')
plt.ylabel('y')