【问题标题】:How can I spread node on 2D domain?如何在二维域上传播节点?
【发布时间】:2013-11-20 12:23:01
【问题描述】:

有没有人知道 MATLAB 中的任何功能(或任何建议),我可以在 2D 域上传播节点?

我有必要分散节点,使节点密度在整个域上几乎相等。

感谢您的帮助。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    rand怎么样?

    如果您需要n 点的二维坐标在二维域上均匀分布,宽度为w,高度为h,则:

    xy = bsxfun(@times, rand( 2, n ), [w; h] );
    figure; scatter( xy(1,:), xy(2,:), 40, '+' );axis equal;
    

    以下是n=500h=3w=1 的可能结果:

    【讨论】:

    • 非常感谢,但我如何将它用于任何 2D 域,例如圆形?我应该改变 [w;h] 吗?
    • 对于任意矩形域,您可以使用 2D 变换旋转 xy。但是,使用超出旋转、平移、缩放的任意变换,得到的密度可能不再均匀。
    • 三角分布请参见this question。请注意人们在他们的答案中如何解决 uniform 的主题!
    • 对于圆形,最简单的方法肯定是拒绝方法:生成xy = -R + 2*R*rand(n,2);并拒绝圆形外的所有点:xy(sum(xy.^2,2) > R^2, :) = [];
    猜你喜欢
    • 2011-11-05
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多