Optimal Cutoff Frequency for Static Noise Detection in ECG Signals?

9 次查看(过去 30 天)
Hello MATLAB Community,
I am currently working on optimizing the detection of static noise in ECG signals and would greatly appreciate your expertise. Specifically, I am looking to determine the best cutoff frequency for filtering this noise. Below, I have listed the SNR (Signal-to-Noise Ratio) values for different cutoff frequencies in two leads, Lead I and Lead aVL:
  • Cutoff Frequency = 0.5 Hz
  • SNR in Lead I: 7.98 dB
  • SNR in Lead aVL: 5.41 dB
  • Cutoff Frequency = 1.0 Hz
  • SNR in Lead I: 7.29 dB
  • SNR in Lead aVL: 5.11 dB
  • Cutoff Frequency = 5.0 Hz
  • SNR in Lead I: 4.03 dB
  • SNR in Lead aVL: 3.23 dB
  • Cutoff Frequency = 10.0 Hz
  • SNR in Lead I: 2.17 dB
  • SNR in Lead aVL: 1.96 dB
Quantification of Noise:
  • Cutoff Frequency = 0.5 Hz
  • Number of noise points in Lead I: 299
  • Number of noise points in Lead aVL: 341
  • Cutoff Frequency = 1.0 Hz
  • Number of noise points in Lead I: 278
  • Number of noise points in Lead aVL: 304
  • Cutoff Frequency = 5.0 Hz
  • Number of noise points in Lead I: 179
  • Number of noise points in Lead aVL: 213
  • Cutoff Frequency = 10.0 Hz
  • Number of noise points in Lead I: 127
  • Number of noise points in Lead aVL: 137
Additionally, I have attached an image showing the residuals ( lead I ) .
To determine the best threshold value, I used an approach based on minimizing the number of noise points detected in the filtered signal. Here is a detailed explanation of the process:
Process to determine the best threshold value
Calculation of the filtered signal:
For each cutoff frequency, I applied a high-pass filter to remove low-frequency components from the ECG signal.
Threshold definition:
I tested different threshold values, defined as multiples of the standard deviation (STD) of the filtered signal. The tested thresholds were 0.25 * STD, 0.5 * STD, 0.75 * STD, and 1 * STD.
Noise point detection:
For each threshold value, I detected points in the filtered signal where the amplitude exceeds the threshold.
The number of detected noise points is counted for each threshold value.
Selection of the best threshold:
The best threshold is the one that minimizes the number of detected noise points. The hypothesis is that the optimal threshold eliminates noise without affecting the useful components of the ECG signal.
Based on this data, I am seeking advice on the most suitable cutoff frequency for effectively reducing static noise while preserving the integrity of the ECG signal. Any suggestions or insights into methodologies for determining this would be highly valuable.
Thank you in advance for your help!
Best regards,

采纳的回答

Star Strider
Star Strider 2024-6-17
You have not defined ‘static noise’ so I have no idea what you’re actually filtering.
The bandwidth of a normal EKG is generally 0 Hz (D-C) to 45 Hz, although with complex arrythmias (most notably atrial fibrillation), it can go up to 100 Hz, and baseline drift will show up as low-freqauency noise, usually less than 2 Hz. Any lowpass (for only high-frequency noise) or bandpass (for baseline drift with high-frequency noise) filter with cutoff frequencies outside those limits (higher or lower, respectively) will eliminate some information. For isolated mains/powerline frequency noise (usually 50-60 Hz), you can use a notch filter to eliminate it, although a lowpass filter with a 45 Hz cutoff will work as well in that instance.
The filter choice is generally IIR, and I prefer elliptic filters for their computational efficiency.
The best way to design a filter for any purpose is to first calculate the Fourier transform of the signal, see if the noise is band-limited (as opposed to broadband) and then choose the cutoff frequencies with that in mind. For band-limited noise, a frequency-selective filter will work. For broadband noise, I usually use a Savitzky-Golay filter or wavelet denoising, whichever is more efficient for that particular problem.
The signal you posted appears to be relatively ‘clean’, so I would be tempted to just lleave it as it is.
If you want to plot a 2D vectorcardiogram, you can use Lead I and aVF as:
figure
plot(Lead_I, Lead_aVF)
grid
I suggest doing that experiment.
.
  18 个评论
rawaa mejri
rawaa mejri 2024-7-30,21:00
Hello @Star Strider , I hope your are doing well ,
I use wavelet transform , I test differents wavelets as shown with picture below.
I see that bior3.9 with adaptative thershold is the best ? Do you confirm that ?
Thanks a lot :)
Star Strider
Star Strider 2024-7-30,21:20
I do not have an extensive background with wavelets, although I have used them. I am not familiar with bior splines. If it gives you acceptable results, and has a theoretical basis that makes it appropriate for EKG analysis, then use it! Congratulations on discovering thtat approach.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Single-Rate Filters 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by