Convert XY coordinates to binary matrix

조회 수: 6 (최근 30일)
yoni verhaegen
yoni verhaegen 2017년 3월 23일
댓글: Walter Roberson 2017년 11월 29일
Hello all,
I have a 1332x2 matrix where X and Y coordinates are given of a glacier surface. When I plot the data with scatter, I just get dots at the given coordinates and it shows the glacier surface by plotting all the dots next to each other. However, I want to create a binary matrix, where 0 = no glacier and 1 = coordinate where the galcier exists. Besides, I want a line to be drawn around the glacier.
How can this be done?
Thanks already!
  댓글 수: 2
Roger Stafford
Roger Stafford 2017년 3월 23일
You have not given any indication of what determines the points which occur in your matrix. What is it that makes them close to one another on the glacier? Is it somehow related to the topography? It’s too bad you don’t have the third coordinate Z. One could judge by the gradient values.
Walter Roberson
Walter Roberson 2017년 3월 23일
All of the x y points are on the surface of the glacier.

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

답변 (3개)

Walter Roberson
Walter Roberson 2017년 3월 23일
Are the coordinates all positive integers? If they are then one way would be to use full() on sparse() passing in the coordinate vectors. Be careful about whether you want x to correspond to rows or columns.
If they are not positive integers, then hist2 or equivalent might be appropriate.
  댓글 수: 1
Walter Roberson
Walter Roberson 2017년 3월 24일
To get the line around the points consider using boundary()

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


Image Analyst
Image Analyst 2017년 3월 24일
Perhaps try scatteredInterpolant() to turn your scattered, randomly located points into a regular 2-D image with a value at every pixel.
  댓글 수: 1
Walter Roberson
Walter Roberson 2017년 3월 24일
This will not work. The value associated with every specified point is the constant 1. Treat those as scattered points and interpolate anywhere inside or outside the group and you will get the result 1.0 to within numeric accuracy.

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


Anibal Carcamo
Anibal Carcamo 2017년 11월 29일
I did this for a robot to convert a Distance vs Degree to a matrix of 200x400cm, it may be usefull
Code:
B=zeros(200,400);
for m=1:1:180
for l=1:1:200
for h=1:1:400
if h==tab(m,5,n)&l==tab(m,4,n)
B(l,h)=1;
end
end
end
end
  댓글 수: 1
Walter Roberson
Walter Roberson 2017년 11월 29일
idx = sub2ind(size(B), squeeze(tab(:,5,:)), squeeze(tab(:,4,:));
B(idx) = 1;

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

카테고리

Help CenterFile Exchange에서 NaNs에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by