查找数组中的所有连续数字对

时间:2014-12-09 09:48:27

标签: arrays matlab

如何使用MATLAB在数组中找到所有连续数字对? 例如:

A = [1 2 3 4];
B = desiredFunction(A)  % B = [1 2;2 3;3 4]

显然,我可以使用for循环遍历数组,但我认为有一种更优雅的方法可以做到这一点。甚至可能是重塑的一些变种。

哦,我的场景中的A将始终排序,但不必全部满(diff(A)== 1)。如果A的排序有帮助,那么欢迎两个解决方案(一个用于始终排序的A,一个通用解决方案)。

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为你的意思是连续的位置,你想要没有重复的对。

unique很容易做到这一点:

B = unique([A(1:end-1).' A(2:end).'], 'rows');

您还可以使用sparse,它会为您提供每对发生的次数:

>> A = [1 2 3 4 3 4]; %// note: [3 4] appears twice
>> sparse(A(1:end-1), A(2:end), 1)
ans =
   (1,2)        1
   (2,3)        1
   (4,3)        1
   (3,4)        2

答案 1 :(得分:0)

您可以使用

B = [A(1:end-1)',A(2:end)'];