Python bộ lọc thông cao là gì?
Hơn một thập kỷ trước, tôi đã đăng mã minh họa cách lọc dữ liệu trong Python, nhưng đã có nhiều cải tiến kể từ đó. Các bài đăng gốc của tôi (1, 2, 3, 4) yêu cầu tạo các chức năng lọc riêng biệt, nhưng các phương pháp hiện đại có thể tận dụng Numpy và Scipy để thực hiện việc này dễ dàng và hiệu quả hơn. Trong bài viết này, chúng ta sẽ sử dụng 1 để áp dụng các bộ lọc thông thấp, thông cao và thông dải nhằm giảm nhiễu trong tín hiệu điện tâm đồ (được lưu trữ trong ecg. wav (được tạo như một phần của dự án Sound Card ECG của tôi) Show Các phương pháp lọc cửa sổ chuyển động thường dẫn đến tín hiệu được lọc trễ hơn so với dữ liệu gốc (sự lệch pha). Bằng cách lọc tín hiệu hai lần theo hướng ngược lại, 2 sẽ loại bỏ sự lệch pha này để tạo ra tín hiệu được lọc phù hợp với dữ liệu đầu vào
Tần số cắtĐối số thứ hai được truyền vào phương thức 0 tùy chỉnh tần số giới hạn của bộ lọc Butterworth. Giá trị này (Wn) là một số từ 0 đến 1 biểu thị phần tần số Nyquist sẽ sử dụng cho bộ lọc. Lưu ý rằng tần số Nyquist bằng một nửa tốc độ lấy mẫu. Khi phần này tăng, tần số cắt tăng. Bạn có thể ưa thích và biểu thị giá trị này dưới dạng 2 * Hz/tốc độ mẫu
Cải thiện các cạnh bằng phương pháp của GustafssonMột cái gì đó kỳ lạ xảy ra ở các cạnh. Không có đủ dữ liệu "ngoài trang" để biết cách làm mịn những điểm đó, vậy nên làm gì? Đệm là hành vi mặc định, trong đó các cạnh được đệm bằng các bản sao của các điểm dữ liệu cạnh và làm mịn dấu vết như thể các điểm dữ liệu đó tồn tại. Hạn chế của điều này là một điểm dữ liệu đi lạc ở cạnh sẽ ảnh hưởng lớn đến hình dạng của dữ liệu được làm mịn của bạn Phương pháp của Gustafsson có thể vượt trội hơn so với đệm. Ưu điểm của phương pháp này là các điểm lạc ở các cạnh không ảnh hưởng nhiều đến đường cong được làm nhẵn ở các cạnh. Kỹ thuật này được mô tả trong một bài báo năm 1994 của Fredrik Gustafsson. "Các điều kiện ban đầu được chọn cho các lượt tiến và lùi để bộ lọc tiến-lùi cho kết quả giống như bộ lọc tiến-lùi. " Điều thú vị là bài báo này trình bày phương pháp bằng cách lọc tiếng ồn ra khỏi bản ghi EKG
Bộ lọc thông dảiBộ lọc thông thấp và thông cao có thể được chọn đơn giản bằng cách tùy chỉnh đối số thứ ba được chuyển vào bộ lọc. Đối số thứ hai biểu thị tần số (dưới dạng một phần của tần số Nyquist, một nửa tốc độ lấy mẫu). Truyền danh sách hai giá trị cho đối số thứ hai cho phép lọc tín hiệu thông dải
Lọc sử dụng ConvolutionMột cách khác để truyền tín hiệu thấp là sử dụng tích chập. Trong phương pháp này, bạn tạo một cửa sổ (thường là đường cong hình chuông) và xoay cửa sổ bằng tín hiệu. Cửa sổ càng rộng thì tín hiệu đầu ra càng mịn. Ngoài ra, cửa sổ phải được chuẩn hóa sao cho tổng của nó bằng 1 để bảo toàn biên độ của tín hiệu đầu vào Có nhiều cách khác nhau để xử lý những gì xảy ra với các điểm dữ liệu ở các cạnh (xem 1 để biết chi tiết), nhưng việc đặt 2 thành 3 sẽ xóa các điểm này để tạo ra tín hiệu đầu ra nhỏ hơn một chút so với tín hiệu đầu vào
0Các chức năng cửa sổ khác nhau lọc tín hiệu theo những cách khác nhau. Cửa sổ Hanning thường được ưa thích hơn vì chúng có hình dạng chủ yếu là Gaussian nhưng chạm vào số 0 ở các cạnh. Để thảo luận về ưu và nhược điểm của các chức năng cửa sổ khác nhau để phân tích quang phổ bằng FFT, hãy xem ghi chú của tôi trên FftSharp Tài nguyên
|