Hướng dẫn bandpass filter python - bộ lọc thông dải python
Gần đây trong khi tôi đang làm việc để xử lý tín hiệu tần số rất cao là 12,5 kHz, tức là 12500 mẫu mỗi giây hoặc một mẫu cứ sau 80 micro giây. Điều thú vị hơn là tôi phải rút ra các điểm dữ liệu khác nhau vào tập dữ liệu này. Đây là cách dữ liệu của tôi trong một chu kỳ duy nhất trông giống như Bạn có thể thấy tiếng ồn khi tôi phóng to dữ liệu Vì vậy, bây giờ hãy xem xét, nếu phải xác định điểm mà đường cong bắt đầu nó tăng lên. Với rất nhiều tiếng ồn, có một xác suất rất cao để có được điểm dữ liệu dương tính giả. Cũng tưởng tượng hiệu suất của thuật toán với rất nhiều biến động trong dữ liệu. Tôi sẽ bắt đầu với một số điều cơ bản xử lý tín hiệu, điều cần thiết để hiểu trước khi chúng tôi nhảy vào mã. Khái niệm cơ bản: Bộ lọc Band PassBốn bộ lọc phổ biến.
Bây giờ hãy xem một dữ liệu mẫu, sẽ là lý tưởng để làm việc với Như bạn có thể thấy sự biến dạng gây ra bởi rất nhiều nhiễu đã biến dạng dữ liệu thực tế là dữ liệu sóng tội lỗi.
Điều này có nghĩa là chúng tôi cần một bộ lọc sẽ vượt qua tín hiệu với tần suất nhất là 1,2 Hz, tuy nhiên trong đời thực, tần số tín hiệu có thể dao động, do đó sẽ tốt nếu chúng tôi chọn số lượng cao hơn một chút so với tần số được tính toán lý tưởng. Bạn cũng có thể thử sử dụng FFT (biến đổi Fourier nhanh) để tìm điều tra các tần số và biên độ của tín hiệu so với các thành phần nhiễu, có thể tìm thấy nhiều chi tiết cùng với mã ở đây Bộ lọc ButterworthĐáp ứng tần số của bộ lọc Butterworth là phẳng tối đa (nghĩa là không có gợn sóng) trong băng thông và lăn về phía 0 trong băng tần, do đó là một trong những bộ lọc thông thường phổ biến nhất. Tần số NyquistThuật ngữ nyquist thường được sử dụng để mô tả tốc độ lấy mẫu Nyquist hoặc tần số Nyquist.Nyquist sampling rate or the Nyquist frequency. Tốc độ hoặc tần số Nyquist là tốc độ tối thiểu mà tín hiệu băng thông hữu hạn cần được lấy mẫu để giữ lại tất cả thông tin. Nếu một chuỗi thời gian được lấy mẫu trong các khoảng thời gian thường xuyên DT, thì tốc độ Nyquist chỉ là 1/(2 dt).Nyquist rate or frequency is the minimum rate at which a finite bandwidth signal needs to be sampled to retain all of the information. If a time series is sampled at regular time intervals dt, then the Nyquist rate is just 1/(2 dt ). Hãy nhảy vào mãBước 1: Xác định các yêu cầu của bộ lọc
import numpy as np Bộ lọc Butterworth # sin wave Đáp ứng tần số của bộ lọc Butterworth là phẳng tối đa (nghĩa là không có gợn sóng) trong băng thông và lăn về phía 0 trong băng tần, do đó là một trong những bộ lọc thông thường phổ biến nhất. def butter_lowpass_filter(data, cutoff, fs, order): Tần số Nyquist # Filter the data, and plot both the original and filtered signals. Thuật ngữ nyquist thường được sử dụng để mô tả tốc độ lấy mẫu Nyquist hoặc tần số Nyquist. Tốc độ hoặc tần số Nyquist là tốc độ tối thiểu mà tín hiệu băng thông hữu hạn cần được lấy mẫu để giữ lại tất cả thông tin. Nếu một chuỗi thời gian được lấy mẫu trong các khoảng thời gian thường xuyên DT, thì tốc độ Nyquist chỉ là 1/(2 dt). Hãy nhảy vào mã |