تولید و تجزیه و تحلیل سیگنال با SciPy
SciPy کتابخانه ای قدرتمند برای محاسبات علمی در زبان برنامه نویسی Python است که ابزارهایی را برای تولید و تجزیه و تحلیل سیگنال ارائه می دهد.
در اینجا به برخی از قابلیت های SciPy در زمینه پردازش سیگنال اشاره می کنیم:
۱. تولید سیگنال:
- می توانید از توابع SciPy برای تولید انواع مختلف سیگنال مانند سیگنال های سینوسی، مربعی، مثلثی، دندانه ای و نویز استفاده کنید.
- می توانید سیگنال ها را با فرکانس ها، دامنه ها و فازهای دلخواه ایجاد کنید.
- می توانید سیگنال ها را با زمان نمونه برداری و طول دلخواه ایجاد کنید.
مثال:
فرض کنید می خواهیم یک سیگنال سینوسی با فرکانس ۱۰ هرتز، دامنه ۱ ولت و فاز ۰ رادیان تولید کنیم.
می توانیم از تابع scipy.signal.chirp
به شرح زیر استفاده کنیم:
Python
import scipy.signal as signal
# Generate a sine wave
t = np.linspace(۰, ۱, ۱۰۰۰) # time vector with 1000 samples
f = ۱۰ # frequency in Hz
amplitude = ۱ # amplitude in volts
phase = ۰ # phase in radians
sine_wave = amplitude * np.sin(۲ * np.pi * f * t + phase)
# Plot the sine wave
plt.plot(t, sine_wave)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude (V)')
plt.title('Sine Wave')
plt.show()
۲. تجزیه و تحلیل سیگنال:
- می توانید از توابع SciPy برای تجزیه و تحلیل سیگنال ها در حوزه زمان و فرکانس استفاده کنید.
- می توانید از ابزارهایی مانند تبدیل فوریه سریع (FFT) برای محاسبه طیف فرکانسی سیگنال استفاده کنید.
- می توانید از فیلترهای دیجیتال برای حذف نویز و استخراج اطلاعات مفید از سیگنال ها استفاده کنید.
مثال:
فرض کنید می خواهیم طیف فرکانسی یک سیگنال گفتار را محاسبه کنیم.
می توانیم از توابع scipy.signal.fftconvolve
و scipy.fft.fftshift
به شرح زیر استفاده کنیم:
Python
import scipy.signal as signal
import numpy as np
# Load speech signal
speech_signal, _ = scipy.io.wavfile.read('speech.wav')
# Compute the FFT of the speech signal
fft = np.fft.fft(speech_signal)
# Shift the FFT to put the zero frequency in the center
shifted_fft = np.fft.fftshift(fft)
# Calculate the magnitude of the FFT
magnitude = np.abs(shifted_fft)
# Compute the frequency axis
f = np.linspace(-fs / ۲, fs / ۲, len(magnitude))
# Plot the magnitude spectrum
plt.plot(f, magnitude)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.title('Magnitude Spectrum of Speech Signal')
plt.show()
۳. کاربردهای پردازش سیگنال با SciPy:
- فیلتر کردن: حذف نویز و سیگنال های ناخواسته از سیگنال های صوتی، تصویری و بیولوژیکی.
- استخراج ویژگی: استخراج اطلاعات کلیدی از سیگنال ها برای طبقه بندی، تشخیص و سایر وظایف.
- تجزیه و تحلیل گفتار: شناسایی کلمات، بلندگوها و احساسات در گفتار.
- پردازش تصویر: بهبود کیفیت تصاویر، حذف نویز و استخراج ویژگی برای تشخیص اشیاء و طبقه بندی تصاویر.
- پردازش سیگنال بیولوژیکی: تجزیه و تحلیل سیگنال های EEG، ECG و EMG برای تشخیص بیماری ها و نظارت بر سلامت.
SciPy مجموعه ای جامع از ابزارها را برای تولید و تجزیه و تحلیل سیگنال در Python ارائه می دهد. این کتابخانه به طور گسترده در تحقیقات علمی، مهندسی و کاربردهای صنعتی استفاده می شود.
منابع:
- مستندات SciPy – Signal Processing: https://docs.scipy.org/doc/scipy/reference/signal.html
- آموزش پردازش سیگنال با Python و SciPy: [https://www.coursera.org