How to store consequtive numbers and vector jumps in different matrices?
4 次查看(过去 30 天)
显示 更早的评论
PANAGIOTIS GEORGIOS ILIOPOUOS
2022-3-25
编辑: PANAGIOTIS GEORGIOS ILIOPOUOS
2022-3-25
OK guys, lets say i have a matrix A=[1,2,3,6,7,8,11,12,13,14,15,17,18,19,30,31,32] , i want to locate the consequtive numbers and store them in matrices ,and also the the values that are not consequtive and store them in different matrices.So the output should be like:
A1=[1 2 3] B1=[3 6]
A2=[6 7 8 ] B2=[8 11]
A3 = [11 12 13 14 15 ] B3 = [15 17]
A4=[17 18 19 ] B4=[19 30]
A5=[ 30 31 32]
Any idea how can i solve this?
0 个评论
采纳的回答
Riccardo Scorretti
2022-3-25
编辑:Riccardo Scorretti
2022-3-25
Hi. You can try this:
A = [1,2,3,6,7,8,11,12,13,14,15,17,18,19,30,31,32];
C = {} ; NC = {}; % Consecutive / Non Consecutive vectors
ind = find(diff(A)~=1);
for n = 1 : numel(ind), NC{n} = A(ind(n):ind(n)+1) ; end
ind = [1 ind+1 numel(A)+1];
for n = 1 : numel(ind)-1, C{n} = A(ind(n):ind(n+1)-1) ; end
C
NC
4 个评论
Riccardo Scorretti
2022-3-25
You mean, like that?
A = [1,2,3,6,7,8,11,12,13,14,15,17,18,19,30,31,32];
C = {} ; NC = {}; % Consecutive / Non Consecutive vectors
figure
ind = find(diff(A)~=1);
for n = 1 : numel(ind)
NC{n} = A(ind(n):ind(n)+1);
plot(ind(n):ind(n)+1, NC{n}, 'r') ; hold on;
end
ind = [1 ind+1 numel(A)+1];
for n = 1 : numel(ind)-1
C{n} = A(ind(n):ind(n+1)-1);
plot(ind(n):ind(n+1)-1, C{n}, 'b');
end
C
NC
更多回答(1 个)
David Hill
2022-3-25
A=[1,2,3,6,7,8,11,12,13,14,15,17,18,19,30,31,32];
a=diff(A);
n=num2str(a==1);nn=num2str(a~=1);
n=n(n~=' ');nn=nn(nn~=' ');
[s,e]=regexp(n,'[1]+');
[ss,ee]=regexp(nn,'[1]+');
for k=1:length(s)
AA{k}=A(s(k):e(k)+1);
end
for k=1:length(ss)
BB{k}=A(ss(k):ee(k)+1);
end
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
