Python의 Matplotlib.pyplot.specgram()
Suraj Joshi
2023년1월30일
이 튜토리얼에서는matplotlib.pyplot.specgram()
및scipy.signal.spectrogram()
메서드를 사용하여 Python에서 스펙트로 그램을 그리는 방법을 설명합니다.
스펙트로 그램을 사용하여 신호의 강도에 대한 세부 정보를 얻을 수 있습니다. 특정 지점에서 스펙트로 그램의 색상이 어두울수록 해당 지점의 신호가 더 강해집니다.
matplotlib.pyplot.specgram()
메서드를 사용하여 스펙트로 그램 플로팅
matplotlib.pyplot.specgram(x,
NFFT=None,
Fs=None,
Fc=None,
detrend=None,
window=None,
noverlap=None,
cmap=None,
xextent=None,
pad_to=None,
sides=None,
scale_by_freq=None,
mode=None,
scale=None,
vmin=None,
vmax=None, *,
data=None,
**kwargs)
예: matplotlib.pyplot.specgram()
메서드를 사용하여 스펙트로 그램 플로팅
import math
import numpy as np
import matplotlib.pyplot as plt
dt = 0.0001
w = 2
t = np.linspace(0, 5, math.ceil(5 / dt))
A = 20 * (np.sin(3 * np.pi * t))
plt.specgram(A, Fs=1)
plt.title("Spectrogram Using matplotlib.pyplot.specgram() method")
plt.show()
출력:
matplotlib.pyplot.specgram()
메서드를 사용하여A=20sin(3*np.pi*t)
함수에 대한 스펙트로 그램을 생성합니다. 메서드의 인수 fs
는 샘플링 빈도를 나타냅니다.
scipy.signal.spectrogram()
메서드를 사용하여 스펙트로 그램 플로팅
import math
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
dt = 0.0001
w = 2
t = np.linspace(0, 5, math.ceil(5 / dt))
A = 2 * (np.sin(1 * np.pi * 300 * t))
f, t, Sxx = signal.spectrogram(A, fs=1, nfft=514)
plt.pcolormesh(t, f, Sxx)
plt.ylabel("Frequency")
plt.xlabel("Time")
plt.title("Spectrogram Using scipy.signal.spectrogram() method")
plt.show()
출력:
scipy.signal.spectrogram()
메서드를 사용하여A=2sin(300*np.pi*t)
함수에 대한 스펙트로 그램을 생성합니다. 메소드의 인수fs
는 샘플링 주파수를 나타내고ntft
는 사용 된FFT
의 길이를 나타냅니다.
이 메서드는 f
, t
및 Sxx
세 가지 값을 반환합니다. f
는 샘플 주파수의 배열을, t
는 샘플 시간의 배열을, Sxx
는 A
의 스펙트로 그램을 나타냅니다.
이 방법은 입력 신호의 스펙트로 그램 플롯을 생성하지 않습니다. matplotlib.pyplot.colormesh()
를 사용하여 Figure를 생성 할 수 있습니다.
작가: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn