【发布时间】:2021-10-28 13:22:46
【问题描述】:
我想在 D 内部的 MATLAB 中创建一个随机浮点数数组
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:
【问题讨论】:
我想在 D 内部的 MATLAB 中创建一个随机浮点数数组
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
【讨论】: