例如,在[ 1 2 2 3 2 3 1 ]
中,3
之后2
出现的次数为2。
如何使用MATLAB进行此计算?
答案 0 :(得分:1)
A = [ 1 2 2 3 2 3 1 ]
n = 2
m = 3
找到所有数字n
或m
出现的位置:
idxN = A == n;
idxM = A == m;
计算上面两个索引向量(即idxN
和idxM
)在将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]
。