2009-06-14 35 views
8

Có một thuật toán có thể được sử dụng để xác định xem mẫu dữ liệu được lấy tại các khoảng thời gian cố định có xấp xỉ sóng sin không?Xác định xem tập dữ liệu có xấp xỉ sóng sin

+1

Tôi khá chắc chắn rằng nếu có * bất kỳ * * hữu hạn * tập hợp dữ liệu (với các giá trị X riêng biệt), bạn có thể tìm thấy một làn sóng sin phù hợp chính xác, nếu bạn không đặt một số ràng buộc về tần số (khi tần số tăng lên, sóng sin tiếp cận đường cong đầy không gian). – AakashM

+0

Đó là định nghĩa về biến đổi Fourier liên tục. Trong thực tế, bạn chỉ có thể thực hiện phép biến đổi Fourier rời rạc, và bạn sẽ bị hạn chế về tần số hữu hạn (khi sự mở rộng tích phân Fourier đi vào vô cùng trong trường hợp liên tục). Hầu hết các chức năng "cong" có thể phù hợp rất tốt bằng cách sử dụng biến đổi Fourier, nhưng các chức năng "hình chữ nhật" sẽ luôn có méo ở các cạnh, ngay cả khi việc mở rộng được tiếp tục trong một thời gian dài. (Các đường thẳng đứng tương tự như đồng bằng Dirac, là 1 cho tất cả các tần số). – CookieOfFortune

+0

Cách tốt nhất sẽ phụ thuộc vào cách bạn mong đợi dữ liệu khởi hành từ sự tội lỗi. Tiếng ồn ngẫu nhiên? Waveshape bị bóp méo (ví dụ: đỉnh hình tam giác hoặc bị cắt bớt)? Tổng của một số tội lỗi so với một sin thuần túy? – DarenW

Trả lời

16

Thực hiện phép biến đổi không gian biến đổi dữ liệu thành bảng tần số (tìm kiếm fft, chuyển đổi nhanh chóng, để thực hiện. Ví dụ: FFTW). Nếu nó là một xoang hoặc cosinus, bảng tần số sẽ chứa một giá trị rất cao tương ứng với tần số bạn đang tìm kiếm và một số tiếng ồn ở tần số khác.

Cách khác, khớp vài sinussen ở nhiều tần số và cố gắng khớp chúng bằng cách sử dụng tương quan chéo: tổng các bình phương của sự khác nhau giữa tín hiệu và xoang bạn đang cố gắng khớp. Bạn sẽ cần phải làm điều này cho sinussen ở một loạt các tần số của khóa học. Và bạn sẽ cần phải làm điều này trong khi dịch xoang dọc theo trục x để tìm pha.

+0

Sinussen - sini? –

+0

Số nhiều có vẻ là xoang cũng ... Đó là vấn đề khi không gõ vào tiếng mẹ đẻ của bạn. Sinai sau đó :)? –

+3

Một ước tính tốt về chất lượng sẽ là chiều cao của đỉnh rất cao, chia cho tổng chiều cao của các đỉnh khác. Sử dụng biện pháp này, 1 có nghĩa là hoàn toàn phù hợp, 0 có nghĩa là không phù hợp với tất cả. – Martijn

0

Kiểm tra least squares method.

@CookieOfFortune: Tôi đồng ý, nhưng phù hợp với chuỗi Fourier tối ưu theo nghĩa tối thiểu (như đã nói trên bài viết trên Wikipedia).

Nếu bạn muốn phát xung quanh trước bằng dữ liệu đầu vào của riêng, hãy kiểm tra Discrete Fourier Transformation (DFT) trên Wolfram Alpha. Như đã lưu ý trước đây, nếu bạn muốn triển khai nhanh, bạn nên kiểm tra một trong số một số FFT-libraries.

+3

Sóng sin có thể có pha lệch pha, điều này sẽ làm cho việc sử dụng phương pháp hình vuông nhỏ nhất khó thực hiện hơn. – CookieOfFortune

0

Chụp vào màu xanh dương: Bạn có thể tận dụng lợi thế của thực tế là tích phân của a*sin(t)a*cos(t). Việc theo dõi tối thiểu/tối đa dữ liệu của bạn sẽ cho phép bạn biết a.

+0

∫ (a · tội lỗi (k · t + m) + b) dt = (-a/k) · cos (k · t + m) + b · t + C –

+0

Tôi không chắc đây là một hướng hiệu quả để đi vào. Tuy nhiên, có thể được sử dụng trong lưu ý rằng đạo hàm 2 của một sin là tỷ lệ thuận, và tiêu cực, của bản gốc. d2/dx2) sin (kx) = -k^2 sin (x). Để giảm tác động của tiếng ồn và lỗi vòng, sử dụng một dẫn xuất làm mịn - đọc lên trên lọc Savitzky-Golay. – DarenW

7

Bạn có thể tính toán biến đổi ô nhiễm và tìm kiếm một điểm tăng đột biến. Điều đó sẽ cho bạn biết rằng tập dữ liệu xấp xỉ đường cong sin ở tần suất đó.

+0

mà unfortunatley chỉ hoạt động nếu sóng sin có tần số giống hệt như một fft-bin. Nếu nó ở đâu đó giữa các thùng, bạn sẽ có một phổ hoàn toàn khác. –

+1

Bạn sẽ nhận được một tăng đột biến nổi bật bất kể tần số là bao nhiêu. Câu hỏi không yêu cầu xác định tần suất; chỉ để xác định xem đó là sin hay không. – endolith

Các vấn đề liên quan