intersect misses common elements of 2 matrices

조회 수: 2 (최근 30일)
Jack
Jack 2016년 12월 16일
편집: James Tursa 2016년 12월 17일
I've been using intersect to identify the common elements of two 2D grids. However, when I try it against the following code, it misses some of the common elements.
[x1Grid_1,x2Grid_1] = meshgrid(-70:0.5:70, 1:0.05:17);
xGrid_1 = [x1Grid_1(:), x2Grid_1(:)];
[x1Grid_2,x2Grid_2] = meshgrid(-56:0.5:35, 6:0.05:16);
xGrid_2 = [x1Grid_2(:), x2Grid_2(:)];
[c1,c2,c3] = intersect(xGrid_1,xGrid_2,'rows');
The vector xGrid_2 should be made entirely of elements from xGrid_1. xGrid_2 has 36783 rows, but after running intersect, vectors c1-c3 only have 30195 elements, meaning they miss some of the common elements. I can't understand why this would be happening. Any input would be helpful.
I'm using 2016a.
Thanks, Jack
  댓글 수: 1
John BG
John BG 2016년 12월 16일
what are you after, the line intersection of 2 planes?

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

채택된 답변

Image Analyst
Image Analyst 2016년 12월 16일
I think this might be a case of floating point numbers, arrived at via different operations, not matching when you think they should. You need to check within a tolerance. See the FAQ: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F
  댓글 수: 3
Image Analyst
Image Analyst 2016년 12월 16일
True, as are all negative powers of 2: 2^(-1) and 2^(-2), etc. (0.5, 0.25, 0.125, etc.).
James Tursa
James Tursa 2016년 12월 17일
편집: James Tursa 2016년 12월 17일
Or if you are on a Windows system where the underlying sprintf algorithm is different, you can use num2strexact instead:
>> num2strexact(0.05)
ans =
5.000000000000000277555756156289135105907917022705078125e-2

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

추가 답변 (1개)

Jack
Jack 2016년 12월 16일
Rounding it did the trick - I just used
xGrid_1 = round(xGrid_1*100)/100;
xGrid_2 = round(xGrid_2*100)/100;
to cutoff the decimals after 0.01. That made it work.
Thanks

카테고리

Help CenterFile Exchange에서 Get Started with Phased Array System Toolbox에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by