【问题标题】:draw contour sort matlab绘制轮廓排序matlab
【发布时间】:2013-07-09 04:11:59
【问题描述】:

我有问题。 我有一组 x 和 y 坐标,我可以通过它绘制轮廓或闭合图形。然而,在我在程序中的操作过程中,坐标的顺序可能会改变。因此,现在如果绘制了绘图,则曲线未正确绘制。

下面在我的代码中给出了一个说明:

clc;
clear all 
close all 
xi = [86.7342,186.4808,237.0912,194.8340,84.2774,39.5633,86.7342];
yi = [18.2518,18.2518,102.3394,176.4611,172.1010,88.6363,18.2518];
subplot(1,2,1),plot(xi,yi);
title('original points contour');
xii=xi; yii=yi;
%Suppose the points are interchanged
t=0;
t=xii(3); xii(3)=xii(4); xii(4)=t;
t=yii(3); yii(3)=yii(4); yii(4)=t;
subplot(1,2,2),plot(xii,yii);
title('Redrawn contour with the points exchanged');
%I get this contour. 

代码中显示了这两个图。

无论元素的顺序如何,我都需要能够重新绘制正确的轮廓。我应该使用排序算法吗?如何确定点的顺序以形成没有任何交点的良好闭合轮廓? 提前致谢。

注意::假设在操作过程中我的坐标集变成了这样:

 xiiii =[40,200,210,230,50,20,40] 
 yiiii =[50,60,160,80,120,30,50]
 figure();
 plot(xiiii,yiiii,'+r'); hold on;
 % I need to somehow change the matrices in such a way so as to form
 %an non-overlapping closed surface. 
 %after manipulation I get should get this matrices
 xiii =[40,200,230,210,50,20,40];
 yiii =[50,60,80,160,120,30,50];
 plot(xiii,yiii,'+b');
 hold off; 
 %Notice the difference between the two plots. I require the 2nd plot. 

我希望这个例子能说明我的问题。 再次感谢大家。

【问题讨论】:

  • 您是否尝试在第一阶段保存索引向量?
  • 不,我没有。但即使我这样做了,也解决不了我的问题。为了更清楚,我正在编辑问题。也许到那时它会变得更加清晰。
  • 请看我编辑的问题。

标签: matlab sorting plot contour


【解决方案1】:

解决方法很简单。您需要在第一阶段保存索引向量。然后对于您交换的每个元素,您还需要交换正确的索引。如果您正在交换值(更改元素的顺序或位置),这将起作用。

%before change
p = [p1 p2 p3 p4 p5];

i = [1 2 3 4 5];

% after change
pp = [p1 p2 p4 p3 p5]; 

ii = [1 2 4 3 5];

如果您还需要更多解释,我可以修改您发布的代码。

如果您只有一堆点,并且想要找到跨越这些点的闭环。那么我不得不提一下,你的问题是一个著名的优化问题,叫做“Travel Salesman Problem”(TSP)

给定一个城市列表和每对城市之间的距离,访问每个城市一次并返回始发城市的最短路径是什么?它是组合优化中的一个 NP-hard 问题,在运筹学和理论计算机科学中具有重要意义。 该问题于 1930 年首次提出,是最深入研究的优化问题之一。它被用作许多优化方法的基准。尽管这个问题在计算上很困难,但是大量的启发式和精确的方法是已知的,因此可以解决一些具有数万个城市的实例。

有很多方法可以解决这个问题。 检查此链接以获取更多信息: link

【讨论】:

  • 感谢您的回答。请参阅我编辑的问题。新矩阵的元素可能会改变。 (几乎肯定会)。我仍然需要找到闭合的轮廓或绘图。我自己正在考虑根据指标以特定顺序设置矩阵的元素。但是我无法真正决定使用哪个指标。欧几里得距离会起作用吗?
猜你喜欢
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多