首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

在Matlab中怎么快速生成均匀分布的圆带形数据

2013-10-08 
在Matlab中如何快速生成均匀分布的圆带形数据?在测试一个分类器或降维方法时,常常要用到下面形式的随机数

在Matlab中如何快速生成均匀分布的圆带形数据?

在测试一个分类器或降维方法时,常常要用到下面形式的随机数据:

在Matlab中怎么快速生成均匀分布的圆带形数据

在matlab中怎样产生如上图所示的随数据呢?这里介绍一种比较高效的方法:首生产生一组随机的0到2*pi的角度数据,方法为调用rand先产生0到1的均匀分布数据再乘以2pi。然后再产生一组随机的半径数据:假设上图的内径为r0,带宽为d,则先用rand生成0到1的随机数a,最后半径即为a*d+r0。有了角度和数据就能成生图中的图带了。详细的matlab代码如下:


function [x] = GenCyclicData(inner_radius,band_width,num_points)
rot_deg = rand(num_points,1)*2*pi; %生成随机的角度
radius = inner_radius + band_width*rand(num_points,1);%生成随机的半径
x = [radius.*sin(rot_deg),radius.*cos(rot_deg)]; %生成最终的二难数据
end

%调用:

>> [x] = GenCyclicData(10,5,2000);
>> plot(x(:,1),x(:,2),'*');
>> axis equal  %使x和y轴缩放一致,不然上图看起来就像是椭圆啦。


PS:上述方法产生的数据并不是真正的均乎分布,因为过程中经过了参数变换。但上面的方法的优点是快速,并且用于一般的实验足够了。


热点排行