代码之家  ›  专栏  ›  技术社区  ›  Zander

在嵌套单元中随机选择成员位置:Matlab

  •  6
  • Zander  · 技术社区  · 7 年前

    我有一个嵌套的单元格,如下所示:

    CellArray={1,1,1,{1,1,1,{1,1,{1,{1 1 1 1 1 1 1 1}, 1,1},1,1},1,1,1},1,1,1,{1,1,1,1}};

    我需要在中随机选择一个位置 CellArray . 所有成员的位置 必须有相同的机会在随机选择过程中被选中。谢谢

    1 回复  |  直到 7 年前
        1
  •  9
  •   rahnema1    7 年前

    您可以捕获 celldisp 作用然后使用正则表达式导出索引:

    s=evalc('celldisp(CellArray,'''')');
    m = regexp(s, '\{[^\=]*\}', 'match');
    

    m =
    {
      [1,1] = {1}
      [1,2] = {2}
      [1,3] = {3}
      [1,4] = {4}{1}
      [1,5] = {4}{2}
      [1,6] = {4}{3}
      [1,7] = {4}{4}{1}
      [1,8] = {4}{4}{2}
      [1,9] = {4}{4}{3}{1}
      [1,10] = {4}{4}{3}{2}{1}
      [1,11] = {4}{4}{3}{2}{2}
      [1,12] = {4}{4}{3}{2}{3}
      [1,13] = {4}{4}{3}{2}{4}
      [1,14] = {4}{4}{3}{2}{5}
      [1,15] = {4}{4}{3}{2}{6}
      [1,16] = {4}{4}{3}{2}{7}
      [1,17] = {4}{4}{3}{2}{8}
      [1,18] = {4}{4}{3}{3}
      [1,19] = {4}{4}{3}{4}
      [1,20] = {4}{4}{4}
      [1,21] = {4}{4}{5}
      [1,22] = {4}{5}
      [1,23] = {4}{6}
      [1,24] = {4}{7}
      [1,25] = {5}
      [1,26] = {6}
      [1,27] = {7}
      [1,28] = {8}{1}
      [1,29] = {8}{2}
      [1,30] = {8}{3}
      [1,31] = {8}{4}
    }
    

    使用 randi

    m{randi(numel(m))}