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:enter image description here

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.

È stato utile?

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});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top