Pregunta

He escrito un bucle for para dividir 5000 filas en consecuencia a lo largo de cada una de las columnas en las que se encuentran.

Ejemplo de la matriz de celdas que contiene esas filas:enter image description here

A partir de esa imagen, me gustaría dividir cada fila en consecuencia a lo largo de sus respectivas columnas de esa fila a partir de la primera columna hasta el final.

Este es el código que he escrito:

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

He usado expresiones regulares para reemplazar las colons (:), con un espacio en blanco. Sin embargo, me está lanzando un error indicando Input strings must have one row.. No sé cómo resolver esto.

Por favor avise.

¿Fue útil?

Solución

Haría esto así:

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

La división todas las filas basadas en delimitadores (un delimitador es cualquier combinación de espacio en blanco y ":")

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

Ahora sus datos divididos se pueden leer como

example = splitData{row}{column};

Lo más probable es que desee convertir esto en números (no cadenas). Puedes hacer esta fila a la vez como esta:

numericRow = num2double(splitData{rowNumber});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top