Повторять буквы в строке в Matlab - PullRequest
0 голосов
/ 14 ноября 2018

Я хотел бы сгенерировать строку в Matlab, которая выглядит как

"BBBBBBBBBBBBBBBBCCCCCCCCCCCCCC"

, где "B" повторяется m раз, а "C" повторяется n раз,Есть ли какая-либо функция с входами, похожая на ("B","C",n,m), делающая это?

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Вы можете создать свою собственную функцию, используя repmat:

>> f = @(a,b,n,m) [repmat(a, [1 m]) repmat(b, [1 m])];
>> f('B','C',12,14)

ans =

    'BBBBBBBBBBBBBBCCCCCCCCCCCCCC'
0 голосов
/ 14 ноября 2018

Вы можете использовать функцию repelem для повторения символов требуемое количество раз.

str = 'BC' %This is character vector, NOT a string
n = 4; m = 3;
res = repelem(str,[n,m])

res =

    'BBBBCCC'
0 голосов
/ 14 ноября 2018
Функция

repmat работает как с массивами символов, так и с операторами конкатенации.Итак:

copyfcn = @(B,C,n,m) [repmat(B,[1 n]) repmat(C,[1,m])];
copyfcn('B','C',8,4)

ans =

    'BBBBBBBCCCC'

Если вы хотите, чтобы вывод был строкой, а не массивом символов, вы можете просто обернуть его в функцию string().

copyfcn2 = @(B,C,n,m) string([repmat(B,[1 n]) repmat(C,[1,m])]);
copyfcn2('B','C',8,4)

ans = 

    "BBBBBBBBCCCC"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...