Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在MATLAB中从N个点中随机选择k个点?

我使用以下代码创建和绘制N点:

N=input('No. of Nodes:'); data = rand(N,2) % Randomly generated n no. of nodes x = data(:,1); y = data(:,2); plot(x,y,'*'); 如何从N个点中选择k个点(概率为p=0.25 ),然后将这些k点涂成红色,其他点保留为* 。


回答:
您可以采用两种方法。第一种解决方案是从N值中随机选择k值,这将确保您始终选择k个点。第二种解决方案是随机选择值,每个值的平均选择概率为p ,这可能会导致随机选择的结果少至0或多达N

    从N值中选取k :

    您可以使用函数RANDPERM来创建整数1到N的随机排列,然后从排列列表中选择前k值并将其重新绘制为红色:

    index = randperm(N); plot(x(index(1:k)),y(index(1:k)),'r*'); 以平均概率p选择值:

    您可以使用RAND函数为N值中的每一个选择一个从0到1的随机值,然后选择一个随机值小于或等于平均概率p并将其重新绘制为红色:

    index = (rand(N,1)
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 02:36


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.