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

Zan*_*der 6 random matlab multidimensional-array cell-array

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

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必须在随机选择过程中具有相同的机会.谢谢.

rah*_*ma1 9

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

s=evalc('celldisp(CellArray,'''')');
m = regexp(s, '\{[^\=]*\}', 'match');
Run Code Online (Sandbox Code Playgroud)
  • 感谢@excaza建议更清楚地使用regexp

结果:

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}
}
Run Code Online (Sandbox Code Playgroud)

使用randi选择索引:

m{randi(numel(m))}
Run Code Online (Sandbox Code Playgroud)

  • 可以从`regexp`用`米=正则表达式得到相同的结果(S,"\ {[^\=]*\}","匹配");`,它我认为是用户什么的更清楚的表示正在退出正则表达式.仍然非常聪明,+ 1 (4认同)