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. – Jeiman

ответ

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}); 
Смежные вопросы