Haga una cadena dividida para más de una fila en Matlab
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:
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.
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});