
How to effectively reorder data
3 次查看(过去 30 天)
显示 更早的评论
I have unordered coordinates and when i order it by doing th following,
contorno = readtable('HJ_00-01.xlsx');
contx = table2array(contorno(:,1));
conty = table2array(contorno(:,2));
cx = mean(contx);
cy = mean(conty);
a = atan2(conty - cy, contx - cx);
[~, order] = sort(a);
reorderedx = contx(order);
reorderedy = conty(order);
When I plot, this is what i get
plot(reorderedx, reorderedy)

How do I get a continuous "smoth" line plot without the spikes that are present in the figure.
What is the best way to reorder my data?
0 个评论
采纳的回答
Bruno Luong
2018-11-23
contorno = readtable('HJ_00-01.xlsx');
contx = table2array(contorno(:,1));
conty = table2array(contorno(:,2));
userConfig = struct('xy',[contx(:) conty(:)]);
resultStruct = tsp_nn(userConfig);

0 个评论
更多回答(2 个)
Cris LaPierre
2018-11-23
This is a non-trivial problem, as I'm sure you've discovered. I'm wondering if you can find something useful in this traveling salesman example problem.
0 个评论
Image Analyst
2018-11-23
One way is to sort things angulalry. Compute the center, then compute the angles of each point from the center, then use both outputs of sort(). Easy, but let us know if you can't do it.
4 个评论
Bruno Luong
2018-11-23
编辑:Bruno Luong
2018-11-23
Of course it does, depending where the center is (I can see very well where it's located approximatively, up north there), which is in turn depend on the density of the point on the boundary.
In anycase this kind of method (angle sorting) bounds to fail for such complicated boundary.
Image Analyst
2018-11-23
Yes, when I ran the code, and plotted the centroid, it shows the centroid is not where you'd have thought at first. For what it's worth, I also tried the boundary() function. I agree the TSP solution seems to be best. I'm voting for that.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!