圆内均匀分布matlab,利⽤matlab中rand函数⽣成圆和球中均
匀分布的数据点
⼀. rand 函数
rand函数是⽣成(0,1)之间均匀分布的数据点。
rand(m,n): ⽣成m⾏n列的在(0,1)之间的数据点,这些数据服从均匀分布。
例如⽣成1x2的服从(0,1)之间均匀分布的数据点:
matlab生成随机数>> rand(1,2)
ans =
0.8147 0.9058
⼆. ⽣成半径为r的圆内均匀分布的数据点
%⽣成圆中均匀分布的随机数据点
angle=rand(1,1000)*2*pi; %(0,2*pi)之间均匀分布数据点
r=sqrt(rand(1,1000));%(0,1)之间r^2均匀分布数据点
x=r.*cos(angle);
y=r.*sin(angle);
figure
plot(x,y,'r.');
axis square
三. ⽣成半径为r的球内均匀分布数据点
%⽣成球中均匀分布的随机数据点
angle1=rand(1,1000)*2*pi;
angle2=acos(rand(1,1000)*2-1);;
r=power(rand(1,1000),1/3);
x=r.*cos(angle1).*sin(angle2);
y=r.*sin(angle1).*sin(angle2);
z=r.*cos(angle2);
figure
plot3(x,y,z,'r.');
axis square;
四. 注意事项
1. 在圆中⽣成均匀分布的随机数据点的时候,半径需要开平⽅,⽽不能直接rand⽣成随机半径值。这是因为均匀分布在这种情形下是针对
圆的⾯积⽽⾔,在极坐标下,⾯积元是,通过积分
不变。⾯积元是均匀分布的,从⽽
服从均匀分布,并不是
不服从均匀分布,故开平⽅。⽽⾓度
仍服从
均匀分布,不⽤开平⽅。
2. 在球中⽣成均匀分布随机数据点,半径需要开3次⽅,angle2⽤到反余弦。这是由于均匀分布此时指的是体积,即在球中任取⼀点的概率都相等。在球坐标下,球的体积元是
,通过重积分得体积,
变成
服从均匀分布,故开三次⽅,
变成
,所以
服从均匀分布,⽣成rand(-1,1)再反余弦即可的

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。