Question

J'ai écrit une boucle for dans laquelle diviser 5000 lignes en conséquence le long de chacune des colonnes dans lesquelles elles se trouvent.

Exemple de tableau de cellules contenant ces lignes: entrez la description de l'image ici

À partir de cette image, je voudrais diviser chaque ligne en conséquence le long de leurs colonnes respectives de cette ligne à partir de la première colonne jusqu'à la fin.

Voici le code que j'ai écrit:

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

J'ai utilisé des expressions régulières pour remplacer les deux-points (:), par un espace.Cependant, cela me lance une erreur indiquant Input strings must have one row..Je ne sais pas comment résoudre ce problème.

S'il vous plaît aviser.

Était-ce utile?

La solution

Je ferais ceci comme ceci:

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

Le Diviser toutes les lignes en fonction de délimiteurs (un délimiteur est une combinaison d'espaces blancs et de ":")

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

À présent, vos données fractionnées peuvent être lues comme

example = splitData{row}{column};

Vous voudrez probablement convertir cela en nombres (pas en chaînes).Vous pouvez faire ceci une ligne à la fois comme ceci:

numericRow = num2double(splitData{rowNumber});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top