2011-10-26 39 views
5

thể trùng lặp:
Determining the number of occurrences of each unique element in a vectorlần xuất hiện Đếm trên một mảng sử dụng MATLAB

Tôi đã mảng sau:

v = [ 1 5 1 6 7 1 5 5 1 1] 

Và tôi cần phải đếm các giá trị và hiển thị số có nhiều lần xuất hiện hơn.
Từ ví dụ trên, các giải pháp sẽ là 1 (có năm 1 của)

Cảm ơn trước

+2

@ Jonas: Điều này có thể đơn giản hơn – Jacob

+0

@Jacob: bạn nói đúng. – Jonas

+1

các câu hỏi tương tự khác: [Tính toán các giá trị phổ biến nhất] (http://stackoverflow.com/questions/1846635), [Làm cách nào để đếm số phần tử của một giá trị đã cho trong ma trận?] (Http: // stackoverflow. com/questions/2880933), [Có thay thế thanh lịch hơn cho vòng MATLAB này không?] (http://stackoverflow.com/questions/3427291), [hàm để xác định pmf (X) trong MATLAB] (http: // stackoverflow.com/questions/4068403) – Amro

Trả lời

10

Sử dụng mode.

Nếu bạn cần phải trả lại số phần tử là tốt, làm như sau:

m = mode(v); 
n = sum(v==m); 
fprintf('%d appears %d times\n',m,n); 
1

@Jacob là đúng: mode(v) sẽ cho bạn câu trả lời mà bạn cần.

Tôi chỉ muốn thêm một cách tốt đẹp để đại diện cho tần số của mỗi giá trị:

bar(accumarray(v', 1)) 

sẽ hiển thị một biểu đồ thanh tốt đẹp với số lượng của mỗi giá trị trong v.

9

Phương pháp khác đang sử dụng hàm hist, nếu bạn đang xử lý các số nguyên.

numbers=unique(v);  %#provides sorted unique list of elements 
count=hist(v,numbers); %#provides a count of each element's occurrence 

Chỉ cần đảm bảo bạn chỉ định giá trị đầu ra cho hàm lịch hoặc bạn sẽ kết thúc với biểu đồ thanh.

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