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

Random selection of a member's location in a nested cell of cells: Matlab

我有一个像下面这样的嵌套单元格:

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 中随机选择一个位置。 CellArray 的所有成员位置必须在随机选择过程中有相同的机会被选中。谢谢

您可以捕获 celldisp 函数的输出。然后使用正则表达式提取索引:

s=evalc('celldisp(CellArray,'''')');
m = regexp(s, '\{[^\=]*\}', 'match');
  • 感谢@excaza 建议更清晰地使用正则表达式

结果:

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到select一个索引:

m{randi(numel(m))}