在 read_serial_port_object_location.m 中、我无法理解名为 getClusters 的函数。x_loc 和 y_loc 的含义是什么?为什么我们应该 重复 x'六次?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
在 read_serial_port_object_location.m 中、我无法理解名为 getClusters 的函数。x_loc 和 y_loc 的含义是什么?为什么我们应该 重复 x'六次?
您好!
您所引用的代码用于为群集生成坐标、以便单个"plot (图解)"命令可以绘制图像中的所有群集。 就绘图而言、MATLAB 是一种相当缓慢的语言、因此我们需要减少绘制的线条数。
每个簇都是一个矩形、四个角的每个角都由4个点定义。 群集算法提供的是矩形的中心和矩形的大小。
要了解 MATLAB 代码的作用、假设场景中只有一个仪表组。 即 length (x)=length (y)=length (x_size)=length (y_size)。
然后需要绘制一个矩形(以(x、y)为中心、宽度为2*x_size、高度为2*y_size)。 换句话说、您需要绘制4条线以创建矩形。
1.从(x - x_size、y-y_size)到(x+x_size、y-y_size)
2.从(x + x_size、y-y_size)到(x+x_size、y+y_size)
3.从(x + x_size、y+y_size)到(x-x_size、y+y_size)
4.从(x - x_size、y+y_size)到(x-x_size、y-y_size)
请注意、最后一个坐标和第一个坐标是相同的。 然后、您只需使用单个绘图函数、并使用这5个坐标来绘制它。 如果要以编程方式创建坐标、可以使用命令
x_loc =重新分配(x'、[1、5])+ x_size*[-1 1 -1 -1 -1];
y_loc = repmat (y'、[1、5])+ y_size*[-1 1 -1 -1 -1];
以生成所有坐标、然后绘制它们。
如果您有多个群集、您可以在这些坐标之间添加一个'INF'点。 MATLAB 将忽略'INF'点、并且可以单独绘制簇图。
然后、前面的命令将变为
x_loc = repmat (x'、[1、6])+ x_size*[-1 1 -1 -1 Inf];
y_loc = repmat (y'、[1、6])+ y_size*[-1 1 -1 -1 Inf];
此致
Anil