2013-10-02 21 views
0

您好我已經在MATLAB中的下列對象:需要轉換字符到單元陣列

class(data{1}) = 

    char 

存儲在

class(data) = 

    cell 

但是我試圖撥打:

[estt,este] = hmmtrain(data{1},e,t); 

,並得到一個錯誤:

??? Error using ==> hmmtrain at 209 
Seqs must be cell array or numerical array. 

有沒有辦法使數據的每個元素與hmmtrain函數兼容?

非常感謝

+1

你有沒有試過只是說數據(1)呢? – Steve

+0

如果'data1'都是數字則使用'str2num(數據{1})'... – bla

+0

@natan我已嘗試轉換爲數值數組,但得到的字符:警告:「CCCCCCCCCCCCHHCCHCCCCCCCCCCCHHHHHHHCCCCCHHHHHHCCCHHHHHHHHHHHHHHHHHHCCHCCCCHHHHHHHHCHHHHHHHHHHHHHHCCCHHHHHHHCCCCCCCCCCHEEEEEECCCCCCCHHHHHHHHHHHHCCCCCCCCCCCCCCCCCCCCCCCCHEEEEEECCHHHHHHHHHCCCCCCCCCCCCCCHEHH」 超過最大MATLAB名稱長度爲63個字符,並將截斷爲 'CCCCCCCCCCCCHCHCHCHCHCHCHCCCCCCCCCCCHHHHHHHCCCCCHHHHHHCCCHHHHHHHHHHHHHH'。 >在str2num> protected_conversion at 80 在str2num在46 有沒有辦法來覆蓋這個? – brucezepplin

回答

2

爲了您的序列,data{1}是一個字符數組,所以每個字符轉換成它的ASCII碼通過double

[estt,este] = hmmtrain(double(data{1}),e,t); 

如果你想養活hmmtrain多個序列與選項使用單元陣列作爲第一個輸入參數(因爲看起來你很多人想用data作爲單元格)嘗試以下操作:

dataNumCell = cellfun(@double,data,'UniformOutput',false); 
[estt,este] = hmmtrain(dataNumCell,e,t); 

編輯:更新多個順序選項,其中hmmtrain有額外的兩倍。