Fai una stringa divisa per più di una riga in matlab
Domanda
Ho scritto un ciclo per dividere 5000 righe di conseguenza lungo ciascuna delle colonne in cui si trovano.
Esempio dell'array di celle che contiene quelle file:
Da quell'immagine, vorrei dividere ogni riga di conseguenza lungo le rispettive colonne di quella riga a partire dalla prima colonna alla fine.
Questo è il codice che ho scritto:
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
Ho usato espressioni regolari per sostituire i due punti (:), con uno spazio bianco. Tuttavia, mi sta lanciando un errore affermando Input strings must have one row.
. Non so come risolverlo.
Si prega di avvisare.
Soluzione
Lo farei in questo modo:
%Some sample data
data = {'1 : 2 : 3 :4: 5: 6';'7 :8 : 9: 10 :11 :12'};
La divisione di tutte le righe basate su delimitatori (un delimitatore è qualsiasi combinazione di spazio bianco e ":")
splitData = regexp(data,'[\s\:]*','split')
Ora i tuoi dati divisi possono essere letti come
example = splitData{row}{column};
Molto probabilmente vorrai convertirlo in numeri (non stringhe). Puoi fare questa fila alla volta come questa:
numericRow = num2double(splitData{rowNumber});