2012-02-20 66 views
0

我已經寫一個for循環在其中沿着每個使得它們中的列的相應的分割5000行。包含這些行中的單元陣列的做一個字符串分割爲多行中MATLAB

實施例: enter image description here

從這張圖片中,我想分別沿着它們各自的列開始從第一列開始到結束每一行。

這是我寫的代碼:

for i = pdbindex(:,1) 

    clean_pdb = regexprep(pdbindex, ':', ' '); % removes the colon (:) from the array and replaces it with a whitespace 
    pdb2char = char(clean_pdb); % converts the cell array into a character array 
    pdb2split = strsplit(pdb2char, ' '); % does a split based on the character array followed by a delimiter, which is the white space 

end 

我用正則表達式替換冒號(:),一個空格。然而,它給我一個錯誤,說明Input strings must have one row.。我不知道如何解決這個問題。

請指教。

+1

看起來你的第一行是空的。試試'for i = pdbindex(2:end,1)'。 – Pursuit 2012-02-20 19:21:53

+0

我的歉意。我已經完成了對單元陣列的修改。我已將鼠標光標移動到行上,並在我測試了for循環後回車。 – Jeiman 2012-02-20 19:26:26

回答

2

我會做這樣的:

%Some sample data 
data = {'1 : 2 : 3 :4: 5: 6';'7 :8 : 9: 10 :11 :12'}; 

除法都是基於分隔符行(分隔符是空格和任意的組合「:」)

splitData = regexp(data,'[\s\:]*','split') 

現在將拆分數據可以被讀出爲

example = splitData{row}{column}; 

很可能你會希望將它轉換爲數字(而不是字符串)。你可以像這樣一次做到這一行:

numericRow = num2double(splitData{rowNumber});