Tôi có thể tự viết một cái gì đó bằng cách tìm các điểm giao nhau bằng 0 của đạo hàm đầu tiên hoặc một cái gì đó, nhưng có vẻ như đó là một hàm đủ phổ biến được đưa vào các thư viện chuẩn. Có ai biết ai không?
Ứng dụng cụ thể của tôi là một mảng 2D, nhưng thông thường nó sẽ được sử dụng để tìm các đỉnh trong FFT, v.v.
Cụ thể, trong các loại vấn đề này, có nhiều đỉnh mạnh và sau đó rất nhiều "đỉnh" nhỏ hơn gây ra bởi tiếng ồn nên bị bỏ qua. Đây chỉ là những ví dụ; không phải dữ liệu thực tế của tôi:
Đỉnh 1 chiều:
Đỉnh 2 chiều:
Thuật toán tìm đỉnh sẽ tìm vị trí của các đỉnh này (không chỉ giá trị của chúng) và lý tưởng nhất là tìm đỉnh cực đại mẫu thực sự, không chỉ là chỉ số có giá trị tối đa, có thể sử dụng phép nội suy bậc hai hoặc một cái gì đó.
Thông thường bạn chỉ quan tâm đến một vài đỉnh núi mạnh, vì vậy họ hoặc muốn được lựa chọn bởi vì họ đang ở trên một ngưỡng nhất định, hoặc bởi vì họ là người đầu tiên n đỉnh của một danh sách đặt hàng, xếp hạng bởi biên độ.
Như tôi đã nói, tôi biết cách tự viết một cái gì đó như thế này. Tôi chỉ hỏi nếu có một chức năng hoặc gói có sẵn mà hoạt động tốt.
Cập nhật:
Tôi đã dịch một tập lệnh MATLAB và nó hoạt động tốt cho trường hợp 1-D, nhưng có thể tốt hơn.
Cập nhật cập nhật:
sixtenbe đã tạo ra một phiên bản tốt hơn cho trường hợp 1-D.
find_peaks
, vì vậy tôi đã thêm câu trả lời này có thể hữu ích để tham khảo trong tương lai. (Tôi chắc chắn rằng bạn đã tìm thấy điều này từ năm 2009 nhưng nó dành cho người khác + chính tôi khi tôi sẽ tự hỏi lại câu hỏi sau vài năm nữa!)