向量中相同元素的累积频率计数 - matlab

时间:2013-08-03 13:56:08

标签: matlab

我找不到执行以下任务的matlab函数/代码

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

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

2 个答案:

答案 0 :(得分: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

希望有所帮助

答案 1 :(得分:0)

试试这个,如果你想要一个单行,这将有效......

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

不是最漂亮的,但它会起作用(你总是可以把它分开来使它更清晰)