24小时热门版块排行榜    

查看: 3734  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

yqx1985

木虫 (著名写手)

云中仙

[求助] MATLAB如何随机分组数据

大家好我有一组数据,想对它进行随即分组,该如何完成?

举例如下:假设我有6个数据,不放设为 data=rand(1,6); 我想将这6个数据随机分为3组,注意是随机,每组含有数据是要可以变化的。

比如,这一次分组情况:数据data(1)和data(2)分到了一组,data([3,4,5])分到了另一组,data(6)分到了最后一组。
下次的分组情况:数据data(1)和data(2)分到了一组,data([3,4])分到了另一组,data([5,6])分到了最后一组。
以此等等……

因为每组所含的数据个数是不同的,所以类似我的这样的分组问题matlab是否已有提供函数或谁有好的方法实现呢?

这个问题我觉得主要是一个排列组合问题,6个样本分成3组实际上也就有那么几种方式,即:114(表示有一个组内有一个样本,另一个组内有一个样本,最后一个组内有三个样本),123,222。

所以问题可以转化成,N个样本分成m组,有几种方式?不知道这样说的话,大家是否有好的方法或建议呢?
回复此楼

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

人面不知何时去,桃花依旧笑春风
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiuyouxu

铁杆木虫 (职业作家)

【答案】应助回帖


小雨萌萌(金币+1): 谢谢关注~ 2011-09-08 16:26:46
假设n个数, 分成m组, 先产生m个[0,1]之间的随机数, 设为ri, 然后以ri/sum(ri)为权重得到第i组的长度为mi=n*ri/sum(ri), 然后从1:n里依次随机选择mi个数, 并从1:n里去掉这些数, 继续直到选择m组.
忘记自己,忘记一切烦恼(欢迎访问我的网站兆字节:http://www.mathbeta.com/)
4楼2011-09-05 21:32:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

leedobb

金虫 (正式写手)

【答案】应助回帖

yqx1985(金币+4): 辛苦辛苦了 2011-09-05 23:51:03
我随手编个m文件给你试试吧。编的有点复杂了。呵呵。


clear all;
data =rand(1,50);
N_div = 10;
nn =size(data); N=nn(2);

%%%% randomly redistribute this N numbers
IsRepeated = 1;
RDis(1) = 0;
for i =1:N
     IsRepeated = 1;
   while(IsRepeated == 1)
     J = floor(rand*N+1) ;
     
     if(i==1)
      IsRepeated = 0;
     end
     if(i>1)
      IsRepeated = 0;
      for j=1:i-1
       if(J==RDis(j))
           IsRepeated = 1;
       end
      end
      if(J>N)
          IsRepeated = 1;
      end
     end
   end
   RDis(i) =J;
   
   
end
%%% insert random blocks between numbers (balls).

IsRepeated = 1;
BDis(1) = 0;
for i =1:N_div-1
     IsRepeated = 1;
   while(IsRepeated == 1)
     J = floor(rand*(N-1)+1) ;
     
     if(i==1)
      IsRepeated = 0;
     end
     if(i>1)
      IsRepeated = 0;
      for j=1:i-1
       if(J==BDis(j))
           IsRepeated = 1;
       end
      end
      if(J>N-1)
          IsRepeated = 1;
      end
     end
   end
   BDis(i) =J;
end

BDis = sort(BDis);
NumDis(1,1:BDis(1)) = RDis(1:BDis(1));
NumD (1) = BDis(1);
for i=1:N_div-2
NumDis(i+1,1:BDis(i+1)-BDis(i)) =RDis(BDis(i)+1:BDis(i+1));
NumD (i+1) = BDis(i+1)-BDis(i);
end
NumDis(N_div,1:N-BDis(N_div-1)) = RDis(BDis(N_div-1)+1:N);
NumD (N_div) = N-BDis(N_div-1);

NumDis
有一天,我打了个瞌睡就到了这里,但我知道我掉入了时光的循环中,虽得以永生,但只有第一个循环有意义。
2楼2011-09-05 17:31:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

leedobb

金虫 (正式写手)

引用回帖:
2楼: Originally posted by leedobb at 2011-09-05 17:31:46:
我随手编个m文件给你试试吧。编的有点复杂了。呵呵。


clear all;
data =rand(1,50);
N_div = 10;
nn =size(data); N=nn(2);

%%%% randomly redistribute this N numbers
IsRepeated = 1;
RDis(1) = ...

忘了任务了,请最后再加上下面四行,呵呵。


for i = 1:N_div
    Data_out(i,1:NumD(i)) = data(NumDis(i,1:NumD(i)));
end
Data_out
有一天,我打了个瞌睡就到了这里,但我知道我掉入了时光的循环中,虽得以永生,但只有第一个循环有意义。
3楼2011-09-05 18:19:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiuyouxu

铁杆木虫 (职业作家)

【答案】应助回帖

yqx1985(金币+1): 谢谢应助 2011-09-06 00:12:06
引用回帖:
4楼: Originally posted by xiuyouxu at 2011-09-05 21:32:00:
假设n个数, 分成m组, 先产生m个[0,1]之间的随机数, 设为ri, 然后以ri/sum(ri)为权重得到第i组的长度为mi=n*ri/sum(ri), 然后从1:n里依次随机选择mi个数, 并从1:n里去掉这些数, 继续直到选择m组.

这里的mi可能不是整数, 需要向下取整, 这样最后的和难以保证为n, 可以将最后一个mi取为n减前m-1个mi的和
忘记自己,忘记一切烦恼(欢迎访问我的网站兆字节:http://www.mathbeta.com/)
5楼2011-09-05 21:34:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 2JOx3r2CYEgw 2026-08-22 4/200 2026-08-23 19:34 by lXgU0RvNTDC9
[博后之家] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 2JOx3r2CYEgw 2026-08-22 6/300 2026-08-23 19:34 by lXgU0RvNTDC9
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 2JOx3r2CYEgw 2026-08-21 5/250 2026-08-23 19:10 by lXgU0RvNTDC9
[论文投稿] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 8/400 2026-08-23 18:58 by lXgU0RvNTDC9
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 6/300 2026-08-23 14:21 by KM5EcsNQRBPn
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 2026国自然函评费到账 +15 羊腰板 2026-08-21 16/800 2026-08-23 10:45 by process2012
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 DpSrDtM079iu 2026-08-22 5/250 2026-08-23 04:07 by OEbVnUOu01ol
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 2JOx3r2CYEgw 2026-08-22 7/350 2026-08-23 03:55 by OEbVnUOu01ol
[论文投稿] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-22 5/250 2026-08-23 03:52 by OEbVnUOu01ol
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 DpSrDtM079iu 2026-08-22 3/150 2026-08-23 00:55 by OEbVnUOu01ol
[基金申请] 只有每年这种时候来逛逛小木虫 +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[基金申请] filecode,4个jtjc了 +13 ziyangfang 2026-08-19 16/800 2026-08-22 17:08 by WH3796
[基金申请] 放榜前的不淡定 40+4 snowwithsea 2026-08-19 14/700 2026-08-21 23:51 by cratir
[基金申请] 科研孤儿太难了 +17 我4大白菜 2026-08-20 18/900 2026-08-21 20:57 by zhangev
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 感觉是下周放榜了 +7 angus9576 2026-08-17 12/600 2026-08-21 13:38 by weiyin
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
信息提示
请填处理意见