Если длина строки не кратна n
, вам, вероятно, необходим цикл или arrayfun
:
x = 'ABCDEFGHIJK'; % length 11
n = 3;
result = arrayfun(@(k) x(k:min(k+n-1, end)), 1:n:numel(x), 'UniformOutput', false)
В качестве альтернативы можно использовать accumarray
:
x = 'ABCDEFGHIJK';
n = 3;
result = accumarray(floor((0:numel(x)-1).'/n)+1, x, [], @(t) {t.'}).';
Любой из вышеперечисленных дает, в этом примере,
result =
1×4 cell array
{'ABC'} {'DEF'} {'GHI'} {'JK'}