Compare/match elements of 2 vector data
조회 수: 6 (최근 30일)
이전 댓글 표시
I would like to compare/match elements of 2 vector data, the goal is to select the elements which element-wise from the 2 vectors are different not greater than 3. Then output are the 2 new vector with have the same length and its elements are arranged in order. The size of the 2 vectors (before processed) is arbitrary.
Ex. A = [11 38 49 84 96 117 157 176 200]
B = [10 28 37 48 84 157 175 200]
Compare by element which abs(A(i) - B(j)) <= 3 Then the output should be
A_new = [11 38 49 84 157 176 200]
B_new = [10 37 48 84 157 175 200]
Can anyone guide me how to write MATLAB code for this problem? I used 2 nested loop but got stuck with empty set fault.
Thank you.
댓글 수: 0
채택된 답변
Jos (10584)
2014년 4월 8일
A = [11 38 49 84 96 117 157 176 200]
B = [10 28 37 48 84 157 175 200]
D = abs(bsxfun(@minus, A(:), B(:).')) % find difference of all combinations of A and B
[iA,iB] = find(D <= 3) % which combos meet the criterion
A_new = A(iA)
B_new = B(iB)
추가 답변 (1개)
Image Analyst
2014년 4월 6일
Seems ambiguous to me. What would you do in this case:
Ex. A = [11 38 39 84 96 117 157 176 200]
B = [10 28 37 48 84 157 175 200]
If the 38 moves to position 2 to be associated with the 38, then what does 39 get associated with? Is it compared to the 37, or with the 48 because the values "slide over."
What about these arrays:
Ex. A = [1 1 1 1 1 1 1]
B = [2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3]
댓글 수: 3
Image Analyst
2014년 4월 7일
Where did 49 come from? That was NOT in my example. Anyway, why not just do a pair of nested for loops?
참고 항목
카테고리
Help Center 및 File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!