2017-06-19 123 views
2

我正试图构建HMM模型以离散序列为基础。 意思是我有单元阵列,每个单元包含一个不同长度的序列。MATLAB crossvalind函数在单元阵列上抛出错误

例如:

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 

当我使用矩阵此错误没有出现,但因为我必须使用一个单元阵列,矩阵不是一个选项。

如何在单元阵列上进行交叉验证?

回答

1

你为什么不只是使用seqs的大小来生成指数

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