【问题标题】:Random Numbers in a Domain with unknown function in MATLABMATLAB中具有未知函数的域中的随机数
【发布时间】:2021-10-28 13:22:46
【问题描述】:

我想在 D 内部的 MATLAB 中创建一个随机浮点数数组 D 的边界在哪里

  1. ( (0.6+0.1*cos(3t))*cos(t) , (0.6+0.1*cos(3t))*sin(t) ) t \in [0, pi]
  2. (x,y) where y=0

如何在 MATLAB 中创建这个数组?

类似这张图片的东西;红点在边界D

【问题讨论】:

    标签: matlab random


    【解决方案1】:

    这不是最佳解决方案, 代码未测试,
    首先,创建 n 个随机坐标:

    rc=rand(n,2);
    

    然后做一些重新定位来调整一个正方形区域中的随机数,该正方形区域足够接近你的闭合曲线:

    rc(:,1)=rc(:,1).*1.4-0.7;
    rc(:,2)=rc(:,2).*0.7;
    

    现在你需要扔掉不在你想要的区域内的位置,检查这个首先创建你所在区域的多边形,然后使用 inpolygon 函数:

    t=(0:0.1:pi)';
    x=(0.6+0.1*cos(3t)).*cos(t);
    y=(0.6+0.1*cos(3t)).*sin(t);
    
    in = inpolygon(rc(:,1),rc(:,2),x,y);
    rc(~in,:)=[]; %removing points which are outside of polygon from rc
    

    【讨论】:

    • 非常感谢您的帮助。我检查了代码。只有 rc(~in, :)=[];必须使用。
    • 对不起,请告诉我你是怎么理解我必须使用以下几行的? rc(:,1)=rc(:,1).*1.4-0.7; rc(:,2)=rc(:,2).*0.7;
    • @FAmn 这是一个基于您的图片的示例,用于调整您感兴趣区域附近正方形中的随机分布
    • 这很有趣。非常感谢。
    猜你喜欢
    • 2018-04-16
    • 2012-08-23
    • 2014-08-19
    • 1970-01-01
    • 2014-08-30
    • 2018-02-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多