Filter löschen
Filter löschen

how to insert elements to get a new output

1 Ansicht (letzte 30 Tage)
Elysi Cochin
Elysi Cochin am 4 Okt. 2017
Beantwortet: Andrei Bobrov am 4 Okt. 2017
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

Akzeptierte Antwort

Guillaume
Guillaume am 4 Okt. 2017
Bearbeitet: Guillaume am 4 Okt. 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

Weitere Antworten (1)

Andrei Bobrov
Andrei Bobrov am 4 Okt. 2017
cv = '000001010011100101111';
k = 3;
out = reshape([reshape(cv,k,[]);sprintf('%d',(rem(0:numel(cv)/k-1,k)+1)')],1,[]);

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by