2017-06-19 67 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);