2013-08-03 198 views
0

我有麻煩找到一個MATLAB函數/代碼來執行以下任務累積頻率計數 - MATLAB

我有一個向量C = [1 1 2 2 2 3 3 4]

我需要得到的向量Y = [1 2 1 2 3 1 2 1]

+0

會像直方圖一樣工作嗎?如果是這樣,請參閱:http://www.mathworks.com/help/matlab/ref/histc.html – darthbith

+0

它似乎並不工作 – user1925750

回答

1

可以創建類似如下的功能:

C = [1 1 2 2 2 3 3 4] 
Y = zeros(1,length(C)) 
helper = zeros(1,max(C)) % stores the count for each value 

for i=1:length(C) 
    helper(C(i)) = helper(C(i))+1; %increases the count for the value in C(i) 
    Y(i) = helper(C(i));  
end 

希望幫助

+0

謝謝,它工作正常 – user1925750

0

嘗試了這一點,如果你想在一班輪,這將工作...

Y = sum(cumsum(meshgrid(C)==meshgrid(C)',2).*(meshgrid(C)==meshgrid(C)').*eye(length(A)),1); 

不是最漂亮的,但它會工作(你總是可以拆分它,使它更清晰)

+0

你應該解釋它是如何工作的,單行是很難閱讀。 –