Seperate rows in matrix based on values of the elements.

조회 수: 1 (최근 30일)
Mike Mierlo van
Mike Mierlo van 2020년 3월 2일
댓글: Mike Mierlo van 2020년 3월 2일
Hi,
I have simplified my 'multiple radar' problem into this: Lets say I have matrix A, consisting of columns 1 (timestamp) and 2 (value). I want obtain matrices that have ascending timestamps and the difference between the values in column 2 of the new vectors must not be greater than 5.
%Input matrix [timestamp values]
A= [0 100;
0 400;
0 500;
1 103;
1 397;
1 502;
2 506;
2 104;
2 399];
%Now magic happens
%Output matrices per radar [timestamp values]
OUT1= [0 100;
1 103;
2 104];
OUT2= [0 400;
1 397;
2 399];
OUT3= [0 500;
1 502;
2 506];
Hopefully somebody can help me out of this misery

채택된 답변

KALYAN ACHARJYA
KALYAN ACHARJYA 2020년 3월 2일
편집: KALYAN ACHARJYA 2020년 3월 2일
for i=1:length(unique(A(:,1)))
mat{i}=A(A(:,1)==i-1,:);
end
result=cell2mat(mat)
out1=reshape(result(1,:),[2,3])' % Use loop for 3 statements
out2=reshape(result(2,:),[2,3])'
out3=reshape(result(3,:),[2,3])'
# This may be possible without loop also, recomended
  댓글 수: 6
Mike Mierlo van
Mike Mierlo van 2020년 3월 2일
Thank you! Now I get the same output. But the output matrices do still not meet the requirement:
  • the difference in advancing indexes of column 2 must not be greater than 5.
Any solution for this part?
Mike Mierlo van
Mike Mierlo van 2020년 3월 2일
Found it myself. result=sort(result) will do the job.
Thanks for the help!!!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matched Filter and Ambiguity Function에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by