علوم داده

تبدیل سیگنال با SciPy

تبدیل سیگنال با SciPy

تبدیل سیگنال فرآیندی است که سیگنالی را از یک حوزه به حوزه دیگر مانند زمان به فرکانس یا فضا به فرکانس تبدیل می کند. این کار با استفاده از توابع ریاضی مانند تبدیل فوریه (Fourier Transform) یا تبدیل موجک (Wavelet Transform) انجام می شود.

SciPy کتابخانه ای قدرتمند برای محاسبات علمی در زبان برنامه نویسی Python است که ابزارهایی را برای تبدیل سیگنال در حوزه های مختلف ارائه می دهد.

در اینجا به برخی از توابع رایج SciPy برای تبدیل سیگنال اشاره می کنیم:

1. تبدیل فوریه:

  • تبدیل فوریه (FT) سیگنالی را از حوزه زمان به حوزه فرکانس تبدیل می کند.
  • FT طیف فرکانسی سیگنال را نشان می دهد که نشان می دهد چه مقدار انرژی در هر فرکانس وجود دارد.
  • می توان از توابع scipy.fft.fft و scipy.fft.ifft برای محاسبه FT و تبدیل معکوس فوریه (IFT) استفاده کرد.

مثال:

فرض کنید می خواهیم طیف فرکانسی یک سیگنال صوتی را محاسبه کنیم.

می توانیم از تابع scipy.fft.fft به شرح زیر استفاده کنیم:

Python
import scipy.io.wavfile as wav
import scipy.fft as fft

# Load audio signal
audio_signal, _ = wav.read('audio.wav')

# Compute the FFT of the audio signal
fft_spectrum = fft.fft(audio_signal)

# Calculate the magnitude of the FFT spectrum
magnitude = np.abs(fft_spectrum)

# Compute the frequency axis
f = np.linspace(-fs / 2, fs / 2, len(magnitude))

# Plot the magnitude spectrum
plt.plot(f, magnitude)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.title('Magnitude Spectrum of Audio Signal')
plt.show()

2. تبدیل موجک:

  • تبدیل موجک (WT) سیگنالی را از حوزه زمان به حوزه زمان-فرکانس تبدیل می کند.
  • WT اطلاعات مربوط به فرکانس سیگنال در زمان های مختلف را نشان می دهد.
  • می توان از توابع scipy.signal.wavelets.wavelet و scipy.signal.wavelets.cwt برای محاسبه WT و تبدیل معکوس موجک (IWT) استفاده کرد.

مثال:

فرض کنید می خواهیم نویز فرکانس بالا را از یک سیگنال بیولوژیکی با استفاده از WT حذف کنیم.

می توانیم از توابع scipy.signal.wavelets.wavelet و scipy.signal.wavelets.cwt به شرح زیر استفاده کنیم:

Python
import scipy.signal.wavelets as wavelets
import numpy as np

# Load biological signal
bio_signal = np.loadtxt('bio_signal.txt')

# Choose a wavelet function
wavelet_name = 'morlet'

# Compute the wavelet coefficients
wavelet_coeffs = wavelets.cwt(bio_signal, wavelet_name)

# Threshold the wavelet coefficients to remove high-frequency noise
thresholded_coeffs = wavelets.threshold(wavelet_coeffs, mode='soft', threshold=0.1)

# Reconstruct the signal using the thresholded coefficients
filtered_signal = wavelets.icwt(thresholded_coeffs, wavelet_name)

# Plot the original and filtered signals
plt.plot(bio_signal)
plt.plot(filtered_signal)
plt.xlabel('Time (samples)')
plt.ylabel('Amplitude')
plt.title('Original vs. Filtered Biological Signal')
plt.legend()
plt.show()

3. سایر تبدیلات سیگنال:

  • SciPy توابع دیگری برای تبدیل سیگنال مانند تبدیل هیلبرت (Hilbert Transform) و تبدیل زِملن (Z-Transform) ارائه می دهد.
  • می توانید از کتابخانه های دیگر مانند pysptk برای تبدیل گفتار و librosa برای تجزیه و تحلیل موسیقی استفاده کنید.

انتخاب تبدیل مناسب:

انتخاب تبدیل مناسب به عوامل مختلفی مانند نوع سیگنال، اطلاعات مورد نظر و کاربرد نهایی بستگی دارد.

  • برای تبدیل سیگنال های صوتی، از تبدیل هیلبرت استفاده کنید.
  • برای تجزیه و تحلیل موسیقی، از تبدیل زِملن استفاده کنید.
  • برای تبدیل سیگنال های گفتار، از تبدیلات گفتار مانند تبدیل مل (Mel Transform) و تبدیل MFCC (Mel-Frequency Cepstral Coefficients) استفاده کنید.

نکات تکمیلی:

  • SciPy کتابخانه های دیگری برای پردازش سیگنال مانند scipy.signal.spectral و scipy.signal.chirp ارائه می دهد.
  • می توانید از نرم افزارهای تخصصی پردازش سیگنال مانند MATLAB و Simulink برای طراحی و شبیه سازی تبدیلات پیچیده تر استفاده کنید.
  • منابع آنلاین بسیاری مانند مقالات علمی، کتاب ها و دوره های آموزشی برای یادگیری بیشتر در مورد تبدیل سیگنال با SciPy در دسترس هستند.

کاربردهای تبدیل سیگنال:

تبدیل سیگنال در زمینه های مختلفی از جمله موارد زیر کاربرد دارد:

  • فشرده سازی سیگنال: کاهش حجم داده های سیگنال برای ذخیره سازی یا انتقال.
  • استخراج ویژگی: استخراج اطلاعات کلیدی از سیگنال ها برای طبقه بندی، تشخیص و سایر وظایف.
  • پردازش صدا: حذف نویز، افزایش وضوح صدا و تغییر صدا.
  • پردازش تصویر: فشرده سازی تصاویر، حذف نویز و افزایش وضوح تصاویر.
  • تشخیص پزشکی: تجزیه و تحلیل سیگنال های بیولوژیکی برای تشخیص بیماری ها.
  • ارتباطات: ارسال سیگنال های رادیویی و مخابراتی.

تبدیل سیگنال بخش مهمی از پردازش سیگنال است و SciPy ابزارهای قدرتمندی را برای این کار در Python ارائه می دهد.

منابع:

 

نمایش بیشتر

نوشته‌های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا