Hướng dẫn can python be used for signal processing? - python có thể được sử dụng để xử lý tín hiệu?

Ảnh của Sašo Tušar trên undplash

Show

Từ lý thuyết đến thực tiễn: Ở đây, cách thực hiện phân tích tần số, lọc nhiễu và chiết xuất phổ biên độ bằng cách sử dụng Python

Nếu bạn muốn làm việc với dữ liệu, một điều chắc chắn là: chuyên về hoặc chết. Ý tưởng này của một nhà khoa học dữ liệu có thể làm việc với dữ liệu văn bản, tín hiệu, hình ảnh, dữ liệu bảng và LEGOS là một cách cũ để xem nghề này.specialize or die.
This idea of a data scientist which can work with textual data, signals, images, tabular data and legos is an old fashioned way of seeing this profession.

Ngày nay, với sự ra đời của học máy và những cải tiến lớn về phân tích dữ liệu cũng như các phần cứng của máy tính, điều quan trọng là phải hiểu sâu về cách làm việc với một lớp dữ liệu cụ thể. Điều này là do đơn giản là có quá nhiều để biết về một nhánh của khoa học dữ liệu trước khi nhảy vào một nhánh khác.too much to know about a single branch of data science before jumping into another one.

Trong trường hợp của tôi, tôi làm việc hàng ngày với tín hiệu. Tôi hiểu họ, vì tôi có bằng thạc sĩ vật lý, và tôi có thể nhận được thông tin hữu ích từ chúng, vì tôi là một nhà khoa học dữ liệu.signals. I understand them, as I have a master’s degree in Physics, and I can get useful information out of them, as I am a data scientist.

Trong bài đăng trên blog này, tôi sẽ chỉ cho bạn các hoạt động cơ bản của xử lý tín hiệu, cụ thể là phân tích tần số, lọc nhiễu và kỹ thuật trích xuất phổ biên độ. frequency analysis, the noise filtering and the amplitude spectrum extraction techniques.

Chúng tôi sẽ bắt đầu với một nền tảng lý thuyết ngắn gọn về các kỹ thuật này và chúng tôi sẽ chỉ ra cách chúng hoạt động khi áp dụng cho một bộ dữ liệu rất đơn giản (và công khai) mà chúng tôi sẽ sử dụng làm tín hiệu của chúng tôi.

1. Bối cảnh lý thuyết

1.1 Biến đổi Fourier

Trong tâm trí của chúng tôi, tín hiệu (1D) không có gì ngoài một chuỗi thời gian. Điều này có nghĩa là chúng ta có trục X, đó là thời gian và trục y, đó là số lượng chúng ta đang xem xét (ví dụ: điện áp).

Từ quan điểm trực quan, thực hiện biến đổi Fourier của tín hiệu có nghĩa là để xem tín hiệu này trong một miền khác.

Hãy để nó làm cho nó thậm chí còn đơn giản hơn. Hãy nói rằng bạn là Superman. Tất cả bạn bè của bạn đều biết bạn là Clark Kent. Sau đó, có một số tội ác, bạn thực hiện sự biến đổi của bạn, và bạn trở thành Superman! Bạn luôn là bạn (mặc dù họ không biết điều đó), nhưng họ đang nhìn thấy bạn trong một miền khác, với một bộ trang phục khác, làm một loại công cụ khác.Superman. All your friends know you as Clark Kent. Then there is some crime, you do your transformation, and you become Superman! You are always you (even though they don’t know it), but they are seeing you in another domain, with another outfit, doing another kind of stuff.

Hình ảnh của tác giả

Bây giờ chúng ta có thể làm điều tương tự với các tín hiệu và các thành phần hình sin của chúng.sinusoidal components.

Ý tưởng là nhìn tín hiệu từ miền thời gian đến miền tần số.time domain to the frequency domain.

Hình ảnh của tác giả

Bây giờ chúng ta có thể làm điều tương tự với các tín hiệu và các thành phần hình sin của chúng.

Ý tưởng là nhìn tín hiệu từ miền thời gian đến miền tần số.

Ở phía bên trái của hình ảnh này, chúng ta thấy rằng có một sin duy nhất có tần số = 1. Trong thực tế, ở phía bên phải, bạn chỉ thấy một đỉnh khi tần số = 1 và 0 ở mọi nơi khác.Well, multiple reasons, but let’s pick two:

  1. Hãy tưởng tượng bạn có nhiều sin và cosin tương tác: bạn sẽ thấy nhiều biên độ và nhiều tần số không phải là nhiều chế độ có trong tín hiệu của bạn.. You know that, generally, your signal will have a limited frequency band. If you see something outside of that band you can assume it is white noise (noise that lives at all frequencies) and you can filter it out. (Noise Filtering)
  2. Tại sao điều này lại hữu ích? Chà, nhiều lý do, nhưng hãy để chọn hai: and find very useful insight about the seasonal part of your system. (Frequency Analysis)

Bạn có thể lọc tín hiệu của bạn. Bạn biết rằng, nói chung, tín hiệu của bạn sẽ có dải tần số giới hạn. Nếu bạn thấy một cái gì đó bên ngoài dải đó, bạn có thể cho rằng đó là tiếng ồn trắng (tiếng ồn sống ở mọi tần số) và bạn có thể lọc nó ra. (Lọc tiếng ồn)

Bạn có thể phân tích mô hình định kỳ của tín hiệu của bạn và tìm thấy cái nhìn sâu sắc rất hữu ích về phần theo mùa trong hệ thống của bạn. (Phân tích tần số)project all the components of your Fourier spectrum (all the sines with all the frequency) to your signal. In our example by doing this projection you get 0 everywhere except for frequency 1, when you get a value which is different from 0.

1,2 Biến đổi sóng con

Hãy để Lùi trở lại với Biến đổi Fourier trong một giây. Thực hiện chuyển đổi có nghĩa là để chiếu tất cả các thành phần của phổ Fourier của bạn (tất cả các sin với tất cả tần số) theo tín hiệu của bạn. Trong ví dụ của chúng tôi bằng cách thực hiện phép chiếu này, bạn nhận được 0 ở khắp mọi nơi ngoại trừ tần số 1, khi bạn nhận được một giá trị khác với 0.

Bây giờ, hãy để sử dụng một thứ gì đó phức tạp hơn hàm sin, như DYB2 được hiển thị bên dưới.

Hình ảnh của tác giả

Và chúng ta có thể chơi với anh chàng nhỏ bé này, ký hợp đồng và mở rộng nó và phân tích các dự đoán trên tín hiệu đầy đủ.

Phép chiếu sẽ cung cấp cho chúng ta một tín hiệu được lọc trên mạng và phần dư sẽ là sự khác biệt giữa hình chiếu này và bản gốc.

Đó là một cách khác nhau và chung để lọc tín hiệu của bạn từ tiếng ồn, và nó có lợi thế lớn vì chúng ta sẽ thấy sau này trong một phần.convolution. In particular, the kernel is 1/(pi*t). There is nothing much to talk about in here at this stage, but we will see the power of this algorithm in the hands-on part in a minute!

Biến đổi 1.3 Hilbert

Đôi khi bạn thấy tín hiệu của bạn đầy lên xuống, nhưng bạn không thực sự muốn nó. Bạn chỉ muốn có được phong bì. Về mặt toán học, thao tác này được thực hiện bằng cách sử dụng một tích chập. Cụ thể, kernel là 1/(pi*t). Không có gì nhiều để nói ở đây trong giai đoạn này, nhưng chúng ta sẽ thấy sức mạnh của thuật toán này trong phần thực hành trong một phút!
It is basically a time-series of energy consumption, and it is perfect for our study as it can, by all means, considered as a signal. The dataset is a Public Domain one (CC0: Public Domain) and can be downloaded and used for free with no previous authorization.

Hãy bắt đầu với mã hóa.

2.1 Nhập thư viện

Đây là những gì chúng tôi sẽ cần:

2.2 Xử lý trước dữ liệu

Hãy để âm mưu dữ liệu của chúng tôi

Chúng ta có thể thấy rằng nó có một loại xu hướng và nó không có ý nghĩa gì. Hai tính năng này có thể làm xáo trộn phân tích của chúng tôi. Hãy để điều chỉnh nó bằng cách sử dụng tùy chọn DELREND của SCIPY.detrend option of scipy.

2.3 Phân tích tần số

Bây giờ, thời gian sử dụng biến đổi Fourier để thực hiện phân tích tần số tín hiệu của chúng tôi. Hãy để âm mưu cho phổ Fourier:

Chúng ta có thể thấy những đỉnh núi rất thú vị ở đây. Ví dụ, có tính tuần hoàn khoảng 24 giờ (1 ngày) hoặc 12 giờ (0,5 ngày) hoặc khoảng 80 giờ (ba ngày).

Cụ thể, chúng ta có thể sắp xếp các đỉnh và in các chỉ mục phóng viên:

Bây giờ các chỉ mục là những người in đậm.

Và chúng ta cũng có thể in các chỉ mục này trong số ngày của người Viking.

2.4 Lọc tiếng ồn (Biến đổi Fourier)

Bây giờ chúng ta có thể lấy đỉnh cao nhất làm tài liệu tham khảo và bắt đầu lọc những cái thấp hơn 0,1, 0,2, 0,9 0,9 so với đỉnh cao nhất này. Ví dụ, chúng ta có thể đặt mọi thứ dưới 0,5 lần biên độ cực đại cao nhất về 0.

Chúng ta cần phải cẩn thận. Nếu chúng tôi đặt ngưỡng này quá cao, chúng tôi chỉ lọc nhiễu, nhưng chúng tôi cũng lọc các tính năng quan trọng của tín hiệu. Nếu ngưỡng quá thấp, về cơ bản, chúng tôi không thể lọc bất cứ thứ gì và chúng tôi vẫn giữ tất cả tiếng ồn.

Hãy để một số cố gắng:

Đây là một số kết quả:

0,30 dường như, trong trường hợp này, là một người thay thế tốt. :)

P.S. Để biết thêm thông tin về ứng dụng cụ thể này, xin vui lòng liên quan đến bài viết này.

2.5 Lọc tiếng ồn (biến đổi wavelet)

Chúng ta cũng có thể lọc nhiễu bằng cách sử dụng biến đổi wavelet. Trong trường hợp này, chúng tôi có nhiều cấp độ lọc. Các cấp độ đầu tiên sẽ chỉ lọc nhiễu thuần túy, nhưng chúng sẽ bảo thủ. Bạn càng đi sâu, bạn sẽ có ít tiếng ồn hơn, nhưng bạn cũng sẽ mất các tính năng của tín hiệu (phần dư sẽ tương tự như tín hiệu gốc).

P.S. Để biết thêm thông tin về ứng dụng cụ thể này, xin vui lòng liên quan đến bài viết này.

2.5 Lọc tiếng ồn (biến đổi wavelet)

Chúng ta cũng có thể lọc nhiễu bằng cách sử dụng biến đổi wavelet. Trong trường hợp này, chúng tôi có nhiều cấp độ lọc. Các cấp độ đầu tiên sẽ chỉ lọc nhiễu thuần túy, nhưng chúng sẽ bảo thủ. Bạn càng đi sâu, bạn sẽ có ít tiếng ồn hơn, nhưng bạn cũng sẽ mất các tính năng của tín hiệu (phần dư sẽ tương tự như tín hiệu gốc).

2.6 Khai thác biên độ

Đối với phần này, tôi chỉ tạo ra một tín hiệu lên xuống. Hãy tưởng tượng chúng ta chỉ muốn trích xuất phong bì của nó (tức là cái gọi là biên độ). Bạn chỉ cần áp dụng biến đổi Scipy Hilbert và tính toán giá trị tuyệt đối:

Siêu dễ dàng, nhưng siêu hữu ích trong cuộc sống hàng ngày của một nhà khoa học dữ liệu làm việc với các tín hiệu.

3. Kết luậnLinkedin, where I publish all my stories
B. Subscribe to my newsletter. It will keep you updated about new stories and give you the chance to text me to receive all the corrections or doubts you may have.
C. Become a referred member, so you won’t have any “maximum number of stories for the month” and you can read whatever I (and thousands of other Machine Learning and Data Science top writer) write about the newest technology available.

Làm thế nào để bạn sử dụng lấy mẫu tín hiệu trong Python?

Lấy mẫu & tái thiết f = 20 # hz t = np.không gian linsp (0, 0,5, 200) x1 = np.tội lỗi (2 * np. pi * f * t) s_rate = 35 # hz.f = 20 # Hz t = np. linspace(0, 0.5, 200) x1 = np. sin(2 * np. pi * f * t) s_rate = 35 # Hz.

Tín hiệu Python là gì?

Tín hiệu trong Python là gì?Nói một cách đơn giản, một tín hiệu là một sự kiện.Tín hiệu được sử dụng để làm gián đoạn việc thực thi chức năng đang chạy.Các tín hiệu luôn được thực thi trong chuỗi Python chính.Một sự kiện được tạo ra để thông báo cho các phần khác của ứng dụng.an event. A signal is used to interrupt the execution of a running function. The signals are always executed in the main Python thread. An event is generated to notify other parts of an application.

Làm thế nào để bạn xử lý một âm thanh trong Python?

Khái niệm cơ bản xử lý âm thanh trong Python..
Đọc và ghi các tệp âm thanh ở các định dạng khác nhau (WAV, MP3, WMA, v.v.) ..
Phát âm thanh trên máy tính của bạn ..
Biểu diễn âm thanh dưới dạng dạng sóng và xử lý nó: bộ lọc, mẫu lại, xây dựng phổ phổ, v.v. ..

Là một phần học tập sâu của xử lý tín hiệu?

Deep Learning cung cấp các cơ hội mới để phát triển các mô hình dự đoán để giải quyết nhiều ứng dụng xử lý tín hiệu.MATLAB® hỗ trợ toàn bộ quy trình làm việc từ khám phá đến việc triển khai các hệ thống xử lý tín hiệu được xây dựng trên các mạng sâu.. MATLAB® supports the entire workflow—from exploration to implementation of signal processing systems built on deep networks.