【问题标题】:Matlab and color point specific areasMatlab 和色点特定区域
【发布时间】:2012-10-14 21:59:01
【问题描述】:

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

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

但我一直在寻找一种工作方式,因此每个固定点和相关用户在情节上都有相同的东西,p.e.颜色和颜色区域相同。

所以我的问题是二维的:

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

谢谢。

【问题讨论】:

    标签: matlab


    【解决方案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);
    

    【讨论】:

    • 你好这个分散看起来可以工作,但非常非常慢。它也分散了圆圈并想尝试分散六边形,但现在我想解决速度问题。我希望在我使用的欧几里得方法之前知道 dsearchn 函数。将用户关联到最近的固定点就完成了。感谢您的建议,一切安好。
    • 我从来没有遇到过分散的速度问题。你的数据集有多大?
    • 问题是matlab安装。在win7恢复导致win启动硬盘死机后,我在第二个硬盘上使用matlab安装文件而不重新安装matlab。经过两三次迭代后,结果很奇怪而且很慢。我删除 matlab 并重新安装它,现在可以正常工作了。
    【解决方案2】:

    要找到最近的点,只需计算每个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 可以让您快速计算。

    【讨论】:

    • 您好,感谢您的建议。欧几里得方法很简单并且众所周知,但是每个最近固定点的用户关联是我的问题,如果我的问题不清楚,请见谅。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多