You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中按用户ID从元胞数组为每个用户选2个随机样本

如何在MATLAB中为每个用户ID随机选取指定数量的样本

这问题我之前处理类似需求时也碰到过,用循环结合索引筛选+随机排列的方式就能轻松实现,给你一套完整的解决方案:

完整实现代码

% 初始化存储结果的空元胞数组
C = {};
% 定义每个用户需要选取的样本数量
sample_count = 2;

% 遍历每个唯一用户ID
for idx = 1:length(B)
    current_user = B{idx};
    % 筛选出当前用户在A中的所有样本行索引
    user_rows = strcmp(A(:, 1), current_user);
    % 获取当前用户的全部样本
    user_samples = A(user_rows, :);
    % 生成随机不重复的索引,选取指定数量的样本
    random_idx = randperm(size(user_samples, 1), sample_count);
    % 将选中的样本追加到结果数组C中
    C = [C; user_samples(random_idx, :)];
end

代码逻辑解释

  • 初始化与参数定义:先创建空元胞数组C存最终结果,sample_count设置为你需要的2个样本数,后续要改数量直接改这个值就行。
  • 遍历唯一用户:逐个处理B里的每个用户ID,确保每个用户都能被单独处理。
  • 筛选用户样本:用strcmp匹配A的第一列和当前用户ID,得到该用户所有样本的行索引,从而提取出专属样本集。
  • 随机选样本:randperm(n, k)函数会生成1到n之间k个不重复的随机整数,用它来从用户的样本集中随机挑出指定数量的样本,保证每次运行结果都不一样且不会重复选同一样本。
  • 拼接结果:把每个用户选中的样本拼接到C里,最终得到所有用户的随机样本集合。

这个方案适用于每个用户样本数≥需要选取的数量的情况,完全符合你的需求~

内容的提问来源于stack exchange,提问作者kevin2019

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:39:44