Matlab和色点特定区域

时间:2012-10-24 19:31:40

标签: matlab

我有一个固定点和随机生成用户位置的网格。

每个点和用户的距离都是从轴0.0的起点开始测量的。我想将每个用户与最近的固定点相关联。我计算两个距离向量,每个用户的最小值指向最近的固定点。

但我仍然坚持寻找一种有效的方法,因此每个固定点和相关用户在情节中都有相同的东西,例如。相同的颜色和颜色区域。

所以我的问题是二维的:

  1. 首先是设法将每个用户与其最接近的固定点
  2. 相关联
  3. 如何为结果着色。
  4. 谢谢。

2 个答案:

答案 0 :(得分:1)

对于点搜索,我会使用dsearchn来做这种事情。根据用户与固定站点的比例,您可以使用或不使用delaunay三角测量。我倾向于使用它快速简便的方法,在你的情况下将是:

indices_of_closest_fixed_points = dsearchn(fixed_points, user_points)

至于颜色,我建议您使用类似

的颜色定义颜色贴图
mymap = lines(n) 

其中n是您拥有的固定点数。然后,您可以使用scatter绘制具有特定颜色和大小的点。也许是这样的事情让你开始:

x = user_points(1,:); 
y = user_points(2,:);
S = []; % point sizes, left empty for now
C = mymap(indices_of_closest_fixed_points,:); %colors

scatter(x,y,S,C);

答案 1 :(得分:0)

要查找最近的点,只需计算每个user点与完整fixed点之间的欧氏距离。那么最短距离的索引也将是fixed点的索引。

dist = calc_dist(fixedPts, aSingleUserPt)
[~, idx] = min(dist); 

要解决颜色问题,您需要创建从fixed点索引到唯一颜色的色彩映射。然后,当您plot用户点时,您将设置的图表颜色等于idx处评估的色彩图

注意欧洲距离很容易计算:

euc_dist = sqrt( (x1 - x2)^2 + (y1 - y2)^2 );

functions on File Exchange可让您快速计算出来。