如何计算数字i出现在数字j之后的次数?

时间:2015-11-13 07:42:19

标签: matlab

例如,在[ 1 2 2 3 2 3 1 ]中,3之后2出现的次数为2。 如何使用MATLAB进行此计算?

2 个答案:

答案 0 :(得分:1)

A = [ 1 2 2 3 2 3 1 ]
n = 2
m = 3

找到所有数字nm出现的位置:

idxN = A == n;
idxM = A == m;

计算上面两个索引向量(即idxNidxM)在将idxM一个元素向左移动后重叠的位置:

sum(idxN(1:end-1) & idxM(2:end))

请注意,您也可以在一行中执行此操作:

sum(A(1:end-1)==n & A(2:end)==m)

答案 1 :(得分:1)

Dan's approach可能是最干净的。

这是另一种方式,利用strfind也适用于数字的(未记录的?)事实:

data = [1 2.1 2.1 3.4 0 2.1 3.4 1];
pattern = [2.1 3.4];
result = numel(strfind(data, pattern));

好处是,这可以推广到两个以上的数字,例如定义pattern = [2.1 3.4 1]