how to insert elements to get a new output

i have a character variable with elements such as
cv = '000001010011100101111'
vect = [1 2 3];
Now i want to insert the vect elements to cv after every 3 elements. So that i get
new_cv = '0001001201030111100210131111'
for understandability i insert space after 3 elements
cv = '000 001 010 011 100 101 111'
new_cv = '000 1 001 2 010 3 011 1 100 2 101 3 111 1'
The elements of vect is repeated till the length of cv

 Réponse acceptée

Guillaume
Guillaume le 4 Oct 2017
Modifié(e) : Guillaume le 4 Oct 2017
cv = '000001010011100101111'
vect = [1 2 3];
groupsize = 3;
assert(mod(numel(cv), groupsize) == 0, 'Input cannot be divided evenly into groups of %d elements', groupsize);
prefix = reshape(cv, groupsize, []); %reshape input into columns of groupsize elements
postfix = char(repmat(vect + '0', 1, ceil(size(prefix, 2)/groupsize))); %replicate vect to be at least as long as prefix, and convert to char
postfix = postfix(1:size(prefix, 2)); %truncate unneeded elements
result = reshape([prefix; postfix], 1, []) %concatenate and reshape into one row

Plus de réponses (1)

cv = '000001010011100101111';
k = 3;
out = reshape([reshape(cv,k,[]);sprintf('%d',(rem(0:numel(cv)/k-1,k)+1)')],1,[]);

Catégories

En savoir plus sur SimEvents dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by