MATLAB crossvalind 函数在元胞数组上抛出错误

MATLAB crossvalind function throws error on cell array

我正在尝试构建基于离散序列的 HMM 模型。 意思是我有一个单元格数组,每个单元格包含一个不同长度的序列。

例如:

seqs{1} = 2     3     6     4     7     1     5    13    14    15    16     0     0     0     0    12    
seqs{2} = 2     3     6     4     7     1     5    19    10    11    13  
seqs{3} = 2     3     6     4     7     1     5    19    10  
seqs{4} = 2     3     6     4     7     1     5    19    10    12  

现在,我想使用 matlab crossvalind 函数进行 K 折交叉验证。

当我尝试 运行 indices = crossvalind('Kfold',seqs,2); 时,出现以下错误:

Error using grp2idx (line 106) A grouping variable must be a categorical, numeric, logical, datetime or >duration vector, a cell vector of strings, or a 2D character array.

我需要每个单元格(单元格包含序列)属于 k 组(k 折叠)中的一个组。

例如(k=2 折):

seqs{1}  - Group 1  
seqs{2}  - Group 2  
seqs{3}  - Group 2  
seqs{4}  - Group 1   

当我使用矩阵时不会出现此错误,但由于我必须使用元胞数组,矩阵不是一个选项。

如何对元胞数组进行交叉验证?

为什么不直接使用序列的大小来生成索引

indices = crossvalind('Kfold',numel(seqs),2);