2012-02-20 2 views
0

に複数行の文字列の分割を行い、私は、彼らがしている列のそれぞれに沿って相応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

最初の行が空であるように見えます。 'i = pdbindex(2:end、1)'を試してください。 – Pursuit

+0

私の謝罪。私は自分のセル配列に修正を加えました。 forループをテストした後、マウスカーソルをその行に移動してEnterキーを押しました。 – Jeiman

答えて

2

私はこのようにこれを行うだろう。今、あなたの分割を

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

を:(区切り文字は空白との任意の組み合わせである「」)

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

分割の区切り文字に基づいてすべての行データは

example = splitData{row}{column}; 

として読み取ることができます。これはおそらく、これを数値(文字列ではありません)に変換することをお勧めします。次のように一度に1行ずつ行えます:

numericRow = num2double(splitData{rowNumber});