matlab - 在 MATLAB 中如何从 N 个点中随机选择 k 个点?

标签 matlab

我使用这段代码来创建和绘制 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创建整数 1N 的随机排列,然后选择排列列表中的前 k 值并将它们重新绘制为红色:

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

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

    index = (rand(N,1) <= p);
    plot(x(index),y(index),'r*');
    

关于matlab - 在 MATLAB 中如何从 N 个点中随机选择 k 个点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1856141/

相关文章:

matlab - MATLAB 中的广义按元素数组复制(每个元素按可变大小复制)

arrays - 矩阵的滑动窗口求和

python - 使用 TCP/IP block 从 Raspberry pi 读取数据

matlab - 如何制作饼图以便我可以单击任何切片?

matlab - 在 Matlab 中计算逆矩阵

matlab - matlab中的最小二乘线性分类器

matlab - 在 MATLAB 中获取矩阵列最大值的索引

MATLAB fitcSVM 权重向量

matlab - 如何使用SIFT算法计算两张图片的相似度?

matlab - 如何在 Matlab 中的 imagesc 颜色条中将逗号添加到数字(例如 1000)中?