Thực hiện FFT ở tần số thấp nhưng độ phân giải cao?


7

Để đặt điều này trong bối cảnh, tôi đang tìm cách đạt được cả tốc độ cao và độ chính xác cao để đo lường sinh học thông qua FFT. Tôi sẽ mô tả một ví dụ nhanh để xem tôi có hiểu đúng về điều này cũng như để minh họa cho câu hỏi của tôi không. Vì vậy, nếu tôi có điều này một cách chính xác, nếu tôi muốn thực hiện FFT tần số thấp, ví dụ tần số 0-64 Hz, để xác định tiêu chí Nyquist, tần số lấy mẫu của tôi sẽ phải ít nhất gấp đôi, như vậy là 128 Hz. Sau đó, nếu tôi muốn độ phân giải tần số 1 Hz đến một thùng, tôi sẽ cần 64 thùng, sẽ đặt tôi ở 128 mẫu vì có cả phần thực và phần ảo. Do đó, để đạt được độ phân giải 1 Hz đó, tôi sẽ được trình bày với tốc độ lấy mẫu chỉ 128 Hz trong khi cần lấy 128 mẫu,

Cuối cùng, điều này dẫn tôi đến câu hỏi thực sự của tôi: ở tần số thấp, có thể lấy FFT độ phân giải cao (nói 1 hoặc 2 Hz mỗi thùng) trong khi vẫn duy trì tốc độ không ổn định? Hay điều này chỉ đơn giản là không thể do những hạn chế của biến đổi? Nếu vậy, có một số phương pháp thay thế hoặc một số thỏa hiệp được thực hiện giữa độ phân giải và tốc độ? Ở một khía cạnh khác, tôi đã đọc một bài báo trước đây về việc quá khổ và ném ra các mẫu ở một số nguyên nhất định qua một điểm nhất định (hoặc một cái gì đó tương tự, xin lỗi nó cách đây ít lâu) để tăng tốc quá trình lấy mẫu. Có lẽ ai đó biết đó là gì (hoặc có thể tôi đang nói lan man vào thời điểm này). Dù bằng cách nào, cảm ơn vì bất kỳ sự giúp đỡ nào bạn có thể cung cấp trước.


1
Vui lòng sử dụng khoảng cách đoạn để làm cho câu hỏi của bạn có thể đọc được.
Peter Smith

Ngoài ra còn có các phương pháp khác để ước tính phổ công suất và các cách khác nhau để xử lý FFT. vi.wikipedia.org/wiki/Spectral_d mật_estimation
Điện áp tăng vọt

3
Biến đổi Wavelet cũng có thể rất hữu ích trong môi trường này, bởi vì chúng sẽ cung cấp độ phân giải thời gian tăng ở tần số cao hơn trong khi cho phép các tín hiệu tần số thấp hơn tăng và giảm chậm nhất có thể.
Cort Ammon

Nếu bạn muốn FFT độ phân giải cao, hãy thực hiện các phép đo dài với tỷ lệ lấy mẫu tuân theo Tỷ lệ Nyquist. FFT của phép đo 1 giây cho độ phân giải 1 Hz, phép đo 10 giây cho độ phân giải 0,1 Hz
Aenid

Câu trả lời:


11

Người ta thường cần phải thu được nhiều mẫu trên mỗi giai đoạn dạng sóng để có kết quả tốt từ FFT. Giới hạn Nyquist của 2 mẫu mỗi kỳ là giới hạn thấp hơn nhưng thường là 10 mẫu mỗi kỳ trở lên là những gì được sử dụng thực tế. Vì vậy, để phân tích tín hiệu 64Hz, bạn có thể muốn thu được các mẫu ở tốc độ 640Hz trở lên.

Ngoài ra (tối đa một điểm) bạn sẽ nhận được kết quả tốt hơn khi đo các tín hiệu định kỳ thực tế nếu bạn thu được nhiều mẫu có giá trị của các chu kỳ dạng sóng. Bạn sẽ cần xác định kích thước cửa sổ nào có ý nghĩa nhất cho ứng dụng của bạn nhưng để thu được các tín hiệu 1Hz tôi sẽ đề nghị chụp ở đâu đó khoảng 10 giây dữ liệu.

Vì vậy, về cơ bản, bạn cần có được các mẫu với tốc độ cao so với tần số cao nhất của bạn và trong một thời gian dài so với tần số thấp nhất của bạn để có kết quả tốt. Điều này bắt buộc rằng sẽ có một số loại độ trễ xử lý sẽ là bội số của khoảng thời gian tần số thấp nhất của bạn. Tuy nhiên, điều này không ngăn bạn thực hiện việc xử lý đó thường xuyên như mọi lần một lần.

Vì vậy, nếu bạn muốn phân tích các thành phần tần số của tín hiệu khi nó thay đổi theo thời gian và bạn muốn xem FFT trông như thế nào với tốc độ cao thì bạn có thể lấy theo nhiều mẫu bạn cần. Chạy FFT. Thay đổi tất cả các mẫu trên 1 vị trí, sau đó lấy lại FFT vào lần lấy mẫu tiếp theo.

VÍ DỤ:
1) Mẫu ở 819,2 mẫu mỗi giây với cửa sổ thời gian là 10 giây.
2) Để các mẫu tích lũy trong 10 giây (với tổng số 8192 mẫu)
3) Chạy FFT trên 8192 mẫu.
4) Hủy mẫu đầu tiên trong bộ đệm và giữ 8191 mẫu khác dịch chuyển chúng trên 1 vị trí.
5) 1 / 819,2 giây sau đó thêm vào mẫu tiếp theo vào cuối bộ đệm và chạy lại FFT.
6) Lặp lại các bước 4-6 cho đến khi bạn hoàn thành phân tích của mình.

Điều này sẽ cung cấp cho bạn một FFT phân tích một cửa sổ trượt dữ liệu 819,2 lần một giây

Công suất xử lý cần thiết cho ví dụ sẽ xấp xỉ 13 * 8192 * 819.2 Các phép toán tích lũy nhân mỗi giây (87 triệu MAC / giây). Một PC bình thường có thể dễ dàng xử lý việc này. Tất nhiên, bạn có thể giảm công suất xử lý theo hệ số N bằng cách chỉ chạy các mẫu FFT từng N (ví dụ: chạy 8 mẫu chỉ yêu cầu 11M MAC mỗi giây).


OK, điều đó có ý nghĩa tôi nghĩ. Tiền đề ban đầu của tôi là hoạt động theo ý tưởng rằng tôi phải thu thập một bộ dữ liệu hoàn toàn mới mỗi lần tôi muốn thực hiện một biến đổi, nhưng điều hợp lý là bạn có thể chạy fft mỗi khi một đoạn dữ liệu mới được đưa vào mảng. Đó dường như là những gì mọi người khác cũng nhận được, nhưng nó không thực sự nhấp cho đến khi tôi đọc lời giải thích của bạn. Cảm ơn
Ghi bàn

6
Hai điều tôi nghĩ có thể hữu ích cho cách tiếp cận này có thể quá rõ ràng để đề cập: 1) Bạn không thể phân biệt tín hiệu 1Hz với tín hiệu 1Hz công suất thấp hơn cộng với độ lệch DC nhanh hơn 1 giây, do đó, đó là giới hạn toán học . 2) Cách tiếp cận này, một khi được mồi, sẽ vượt qua giới hạn này bằng cách sử dụng lại các tín hiệu cũ. Điều này sẽ có tác dụng rõ ràng trong việc tạo ra mối tương quan mạnh mẽ giữa các tín hiệu liền kề. Cuối cùng, cả hai điều này có thể không quan trọng với bạn, nhưng tôi thấy chúng hữu ích cho việc giải thích lý do tại sao phương pháp này xuất hiện để "gian lận".
Cort Ammon

13

Tôi giả sử "tốc độ cao" bạn có nghĩa là một sự chậm trễ nhỏ từ việc thu thập dữ liệu đến FFT kết quả. Với tỷ lệ mẫu thấp, khả năng tính toán của bạn không phải là yếu tố hạn chế, với các máy tính hiện đại. Vấn đề chậm trễ nằm ở việc có đủ dữ liệu để phân tích. Nếu bạn muốn thùng 1Hz của bạn khác với DC / 0Hz, bạn phải tích lũy đủ dữ liệu tín hiệu để thu được toàn bộ chu kỳ của tín hiệu đó. Đây là lý do tại sao, đối với tốc độ mẫu cố định, FFT dài hơn cung cấp cho bạn độ phân giải tần số cao hơn.

Do đó, đối với các tần số rất thấp, tốc độ mẫu thấp của bạn (128Hz) có nghĩa là sẽ chỉ mất một vài mẫu để phân biệt các tần số này: FFT 128 điểm sẽ có độ phân giải 1Hz và FFT 256 điểm sẽ có độ phân giải 0,5Hz. Vấn đề nằm ở việc lấy dữ liệu đó. 256 điểm mất toàn bộ 2 giây để tích lũy ở tốc độ mẫu 128Hz. Để có tốc độ cập nhật FFT nhanh hơn, bạn có thể sử dụng lại các mẫu: lấy 32 mẫu làm khối dữ liệu, sau đó tính toán FFT 256 điểm bằng 8 khối gần đây nhất. Sau đó, khi bạn có 32 mẫu mới, bạn có thể loại bỏ mẫu cũ nhất và cập nhật FFT 4 lần mỗi giây.

Về cơ bản, bạn đã gặp phải sự đánh đổi cần thiết trong việc tạo ra một phổ : bạn phải chọn giữa độ phân giải tần số và địa phương thời gian. (Hoạt động MATLAB và ví dụ ở đây ) Độ phân giải tần số cao hơn đòi hỏi nhiều mẫu hơn, do đó làm cho FFT của bạn thể hiện một khoảng thời gian dài. Sử dụng một khoảng thời gian ngắn có nghĩa là sử dụng ít mẫu hơn, do đó làm cho độ phân giải tần số FFT của bạn thấp hơn. Bạn sẽ phải chọn cái nào quan trọng hơn trong ứng dụng của bạn.


4
+1 để nhận ra vấn đề thực sự (lấy dữ liệu); dạng sóng phải xảy ra đối với nó để đo và dữ liệu thay đổi từ từ theo định nghĩa mất nhiều thời gian để đo độ lệch.
hellowworld922

2

Các tàu DSP hiện đại có thể dễ dàng xử lý các chức năng bạn mô tả; nếu bạn chỉ lấy mẫu 128 lần mỗi giây, bạn có thể dễ dàng thực hiện FFT trên mỗi mẫu và thay đổi một mẫu trên mỗi FFT.


2

Nếu công cụ duy nhất của bạn là một cái búa, mọi vấn đề trông giống như một cái đinh. Tôi nghĩ bạn không hiểu FFT thực sự là gì. Đây là một triển khai nhanh của DFT (Biến đổi Fourier rời rạc). DFT là một công cụ phân tích cho các tín hiệu rời rạc với chu kỳ của khoảng phân tích.

Đối với các tín hiệu trong thế giới thực (bên ngoài việc phân tích tín hiệu động cơ hoặc các máy quay khác), khoảng thời gian đo của bạn sẽ không thực sự tương ứng với một chu kỳ của tín hiệu.

Kết quả là, "thùng tần số" trở nên vô nghĩa và chỉ tương ứng với các tính năng thực tế của tín hiệu thông qua lăng kính của các tạo tác cửa sổ và phổ trải rộng.

Mặc dù hiệu quả của FFT và các mối quan hệ của các chức năng cơ bản của nó với các Eigenfifts của các hệ thống bất biến dịch chuyển tuyến tính, có khả năng con ngựa làm việc dưới vỏ bọc của nhiều công cụ dựa trên tần số sẽ kết thúc bằng FFT, diễn giải các kết quả thô theo thuật ngữ "thùng tần số" gần như chắc chắn sẽ kết thúc tốt nhất liên quan đến thực tế.

Nếu đó là một tín hiệu duy nhất bạn đang cố gắng theo dõi / mô tả, bạn có khả năng tốt hơn với một cái gì đó dựa trên các hệ số LPC.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.