Comment diviser une chaîne en sous-tableaux de longueur n dans Matlab?
par exemple.
Entrée: "ABCDEFGHIJKL" , avec des sous-tableaux de longueur 3
Résultat: {ABC}, {DEF}, {GHI}, {JKL}
3 Réponses :
Cela devrait le faire :)
string = cellstr(reshape(string, 3, [])')
Si la longueur de la chaîne n'est pas un multiple de n , vous avez probablement besoin d'une boucle ou arrayfun :
result =
1Ã4 cell array
{'ABC'} {'DEF'} {'GHI'} {'JK'}
Alternativement, accumarray peut également être utilisé:
x = 'ABCDEFGHIJK';
n = 3;
result = accumarray(floor((0:numel(x)-1).'/n)+1, x, [], @(t) {t.'}).';
Merci beaucoup! Ceci est un article très détaillé et incroyable pour mon cas d'utilisation! J'apprécie ton aide :)
@ Snel12 Heureux de pouvoir aider :-)
Une expression régulière peut faire le travail ici:
exp = '.{3}' %this will output {'abc'} {'def'} but no {'gh'}
qui donne:
res =
1Ã3 cell array
{'abc'} {'def'} {'gh'}
Si vous ne voulez faire correspondre que le groupe de 3 char:
str = 'abcdefgh'
exp = '.{1,3}' %the regular expression (get all the group of 3 char, if number of char left < 3, take the rest)
res = regexp(str,exp,'match')
Bonne idée! Approche très propre