如何使用MATLAB在数组中找到所有连续数字对? 例如:
A = [1 2 3 4];
B = desiredFunction(A) % B = [1 2;2 3;3 4]
显然,我可以使用for
循环遍历数组,但我认为有一种更优雅的方法可以做到这一点。甚至可能是重塑的一些变种。
哦,我的场景中的A将始终排序,但不必全部满(diff(A)== 1)。如果A的排序有帮助,那么欢迎两个解决方案(一个用于始终排序的A,一个通用解决方案)。
谢谢!
答案 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)'];