کد برای دینویز کردن - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

کد برای دینویز کردن

0 امتیاز
من یسری دیتاست پی پی جی قلب دارم میخوام دینویزشون کنم و دیتاست دینویز شده رو تحویل بگیرم
کدی پیشنهاد دارید؟
سوال شده شهریور 8, 1402 بوسیله ی Forough  

1 پاسخ

+1 امتیاز

یک راه حل خیلی ساده این هست که lowpass را روی سیگنال اعمال کنید دو روش در زیر براتون قرار میدم.

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

import numpy as np
from scipy.ndimage.filters import gaussian_filter1d

# Load PPG dataset
ppg_data = # Your PPG dataset

# Preprocess PPG signal
preprocessed_ppg = # Preprocessed PPG signal

# Gaussian filtering
smoothed_ppg = gaussian_filter1d(preprocessed_ppg, sigma=3)

# Display the original and denoised signals
import matplotlib.pyplot as plt

plt.figure(figsize=(10, 4))
plt.plot(ppg_data, label='Original PPG Signal')
plt.plot(smoothed_ppg, label='Denoised PPG Signal')
plt.legend()
plt.xlabel('Time')
plt.ylabel('PPG Values')
plt.title('Denoising PPG Dataset')
plt.show()

 

اعمال فیلتر lowpass از طریق کد زیر .اینجا سیگنال رو خودمون ایجاد کردیم.

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt

# Generate synthetic noisy PPG data
t = np.linspace(0, 10, 1000)
ppg_signal = np.sin(2 * np.pi * 1 * t) + 0.5 * np.random.normal(size=len(t))

# Apply a low-pass filter
b, a = signal.butter(4, 0.1, btype='low')
denoised_signal = signal.filtfilt(b, a, ppg_signal)

# Plot the original and denoised signals
plt.plot(t, ppg_signal, label='Noisy PPG')
plt.plot(t, denoised_signal, label='Denoised PPG')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.legend()
plt.show()

اما راه حل های خیلی دقیق تری هم وجود داره که برپایه deep learning هست .جدیدا اطلاع دارم مهندس ساتکی همچین کاری انجام داده.

پاسخ داده شده شهریور 8, 1402  بوسیله ی farshid_siyah (امتیاز 1,463)   3 11 16
...