How to store consequtive numbers and vector jumps in different matrices?
조회 수: 3 (최근 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
댓글 수: 2
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
