2012-04-24 14 views
14

Tôi đã cố gắng tìm hiểu cách phát hiện hai đỉnh từ biểu đồ. Có thể có nhiều nhưng tôi cần phải chọn hai cao nhất. Về cơ bản những gì tôi cần phải là mặc dù tôi sẽ có những đỉnh cao chuyển sang trái hoặc phải, tôi cần phải giữ chúng. Sự lây lan của chúng có thể thay đổi và giá trị PEAK của chúng có thể thay đổi vì vậy tôi phải tìm cách để giữ hai đỉnh này trong Matlab.Phát hiện hai đỉnh cao nhất từ ​​Histogram

Điều tôi đã làm từ trước đến nay là tạo cửa sổ 5 giá trị. Cửa sổ này có các giá trị từ biểu đồ và quá trình quét được thực hiện. Mỗi lần tôi di chuyển 5 bước về phía trước đến giá trị tiếp theo và so sánh giá trị cửa sổ trước đó với giá trị hiện tại. Mà bao giờ là lớn hơn được giữ.

Có cách nào tốt hơn để thực hiện việc này không?

enter image description here

+0

Tôi nghĩ bạn không thể tách riêng việc xử lý tín hiệu khỏi lập trình trong câu hỏi này. Nếu ai đó đưa ra một câu trả lời dựa trên thống kê, nó sẽ là gì? Xử lý tín hiệu hoặc lập trình? –

Trả lời

5

Return dữ liệu từ hist (hoặc histc) chức năng cho một biến (y = hist(x,bin);) và sử dụng PEAKFINDER FileExchange trình tìm maximums địa phương.

Tôi cũng đã sử dụng chức năng PEAKDET từ Eli Billauer. Hoạt động tuyệt vời. Bạn có thể kiểm tra answer ở đây bằng ví dụ mã.

+1

Tôi khuyên bạn nên thực hiện ước lượng mật độ hạt nhân trước khi chạy công cụ tìm cao điểm trên đó. Các số liệu mẫu trên trang fileexchange cho thấy một số dương tính giả. Ngoài ra, tại sao câu hỏi khác lại di cư sang dsp ở nơi đầu tiên? o_O – abcd

+0

@Bringbackspy: Có, bạn có thể sử dụng hàm 'ksdensity' thay vì' hist'. Đối với câu hỏi di cư để dsp, tôi không có ý tưởng. Nó đã được di chuyển bởi một số quyết định của người điều hành trong khi tôi đang làm việc trên câu trả lời. – yuk

+0

yuk, thật tuyệt! Cảm ơn có vẻ đầy hứa hẹn vì vậy tôi sẽ có một PEEK vào nó :) –

6

Cách đơn giản nhất để làm điều này là làm mịn dữ liệu bằng cách sử dụng hạt nhân gaussian để loại bỏ các biến thể tần số cao.

Sau đó, sử dụng hàm localmax để tìm mức tối đa địa phương.

+2

+1 nếu bạn biết rằng bạn biểu đồ là 'vốn' bimodal, sau đó tôi sẽ mịn nó cho đến khi nó chỉ có hai cực đại. – leonbloy

+0

@slayton, Biểu đồ đã được chuyển qua pha làm mịn. –

+1

@Wajih, ok, nhưng nếu bạn muốn chỉ cách ly các đỉnh thì bạn có thể làm mịn nó hơn để lọc ra các biến thể tần số cao. Những biến thể này là những gì làm cho việc phát hiện đỉnh trở nên khó khăn bởi vì bạn có nhiều cực đại cục bộ. Nếu bạn lọc chúng ra thì nó khá tầm thường. – slayton

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