2010-11-21 56 views
16

Tôi có một tập dữ liệu (một mảng) và tôi cần tìm chu kỳ trong đó. Làm thế nào tôi nên tiến hành .. ?? Xin vui lòng giúp đỡ. Cảm ơn rất nhiều trước. Một số cơ thể cho biết tôi có thể sử dụng FFT nhưng tôi không chắc chắn làm thế nào nó sẽ cho tôi sự chu kỳ. Trợ giúp của bạn được đánh giá cao. Cảm ơn một lần nữa.Cách tìm chu kỳ trong dữ liệu?

Trả lời

0

Bạn có thể sử dụng FFT vì nó sẽ chuyển đổi tập dữ liệu của bạn từ giá trị không gian sang không gian tần số.

Điều này có nghĩa là bạn sẽ có một tập hợp các tần số được tạo sẽ tạo ra đầu vào ban đầu mà bạn muốn phân tích. Sau đó, bạn có thể dễ dàng nhận ra đó là những contribuitions lớn được tạo ra bởi tần số cụ thể và do đó bạn sẽ hiểu có bao nhiêu tính chu kỳ có và đó là những người có ảnh hưởng nhất ..

hãy xem ở đây: http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/dft/

4

PERIODICITY không được xác định rõ. Ví dụ, dữ liệu như:

1, 10, 1, 10, 1, 11, 1, 10, 1, 10, 1, 11, 1, 10, 1, 10, 1, 11

bạn có thể coi là không có chu kỳ chính xác nhưng mạnh mẽ của 2, và là chu kỳ chính xác của 6.

Để có chu kỳ chính xác, bạn có thể tìm dữ liệu đã cho dưới dạng chuỗi con dữ liệu lặp lại hai lần.

Đối với chu kỳ không chính xác của phương pháp miền thời gian tín hiệu thực, nhiễu và miền tần số có thể được sử dụng.

Miền thời gian là tương quan với nhau. Nó giống như tìm kiếm chuỗi con ở trên: tìm kiếm giá trị thay đổi trên dữ liệu nào có độ tương tự tối đa.

Đối với các tín hiệu đơn giản, việc tính chuyển đổi ngưỡng có thể là đủ.

Phương pháp miền thường dùng bao gồm một phương pháp sử dụng FFT/FHT: tìm kiếm tối đa về độ mờ phù hợp cho 1/T chu kỳ.

Phương pháp khác đang sử dụng Cepstrum.

13

Đối với tác vụ này, tốt nhất bạn nên sử dụng tính năng tự tương quan.

FFT là công cụ sai để sử dụng để tìm chu kỳ. Hãy xem xét, ví dụ, một trường hợp dạng sóng của bạn được tạo bằng cách cộng hai sóng sin đơn giản, một với một khoảng thời gian 2 giây (0,5 Hz) và một với 3 giây (0,333 Hz). Dạng sóng này sẽ có chu kỳ 6 giây (tức là 2 * 3), nhưng phổ Fourier sẽ chỉ hiển thị hai đỉnh ở mức 0,5 Hz và .333 Hz.

+1

Bạn sẽ triển khai nhiệm vụ tự tương quan như thế nào? Bạn có thể đưa ra một bản phác thảo? –

+3

@ MusséRedi: Ý tưởng rất đơn giản: chỉ cần lấy sự tự tương quan và tìm ra đỉnh (không phải lúc 0). Vì vậy, câu hỏi duy nhất là, làm thế nào để làm tự tương quan và tìm ra đỉnh của kết quả. Làm thế nào bạn làm điều này sẽ phụ thuộc vào chính xác những gì các công cụ bạn đang sử dụng; mặc dù bạn có thể làm tất cả từ đầu, hầu hết mọi người sẽ sử dụng một số gói phân tích dữ liệu. Đó là, phác thảo của tôi ở đây sẽ không hữu ích, vì vậy thay vào đó, tôi đề nghị, chọn một cách tiếp cận bạn thích, thử nó, và nếu một cái gì đó không hoạt động, hãy đặt một câu hỏi với một số chi tiết cụ thể. – tom10

+0

Tôi đã thử phương pháp trả lời đầu tiên cho http://stackoverflow.com/questions/643699/how-can-i-use-numpy-correlate-to-do-autocorrelation để tự tương quan dữ liệu của tôi. Điều này cho phép một chuỗi số giảm dần. Và giá trị đỉnh không đưa ra bất kỳ thông tin nào về chu kỳ. Khi thử nghiệm trên một hàm sin tôi nhận được một dao động giảm dần. Tôi nên tìm chu kỳ như thế nào? –

1

Tôi tìm thấy giấy kết hợp một biểu đồ dựa trên FFT với tự tương quan để cung cấp thông tin chính xác hơn về tính chu kỳ của tín hiệu. Tôi nghĩ rằng phương pháp này có thể là giá trị xem xét:

On Periodicity Detection and Structural Periodic Similarity

+0

Liên kết này dường như đã chết, nhưng tôi đã tìm thấy một cái gì đó tương tự, sử dụng SVD để tìm chu kỳ của dữ liệu: http://pre.aps.org/abstract/PRE/v59/i4/p4013_1 – Magsol

+0

Tôi vừa kiểm tra liên kết và nó dường như mở tập tin PDF cho tôi. Có thể có các liên kết khác mà bạn có thể thử nếu bạn tìm kiếm tiêu đề của liên kết trên Google Scholar. – bnsmith

1

giấy mới này đã không có rất nhiều sự chú ý, quang phổ phân nhóm

Amariei, C., Tomita, M. , & Murray, DB (2014). Quantifying periodicity in omics data.Biên giới trong tế bào và sinh học phát triển.

Được triển khai trong gói R có sẵn tại oscillat.iab.keio.ac.jp. Tôi không liên kết với các tác giả, nhưng hãy đặt mã tại GitHub here để truy cập dễ dàng hơn (tập lệnh chính here).

Sử dụng DFT và các hàng nhóm thành các quyền hạn phổ lớn, tốt để sử dụng trong trải nghiệm của tôi. Rõ ràng đối với bộ gen, nó được thiết kế mạnh mẽ (được ghi trong mã số là computationally heavy), do đó có thể phụ thuộc vào ứng dụng.

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