MATLAB 中函数未知的域中的随机数

Random Numbers in a Domain with unknown function in MATLAB

我想在 MATLAB 中创建一个随机浮点数数组,它们位于 D 边界 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:

这不是最佳解决方案, 代码未经测试,
首先,创建 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