MATLAB 中函数未知的域中的随机数
Random Numbers in a Domain with unknown function in MATLAB
我想在 MATLAB 中创建一个随机浮点数数组,它们位于 D
边界 D
在
之间
( (0.6+0.1*cos(3t))*cos(t) , (0.6+0.1*cos(3t))*sin(t) ) t \in [0, pi]
(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
我想在 MATLAB 中创建一个随机浮点数数组,它们位于 D
边界 D
在
( (0.6+0.1*cos(3t))*cos(t) , (0.6+0.1*cos(3t))*sin(t) ) t \in [0, pi]
(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