MATLAB Answers

How to insert multiple element after specific numbers in a vector?

16 views (last 30 days)
Patrick Bourke
Patrick Bourke on 14 Feb 2021
Commented: the cyclist on 15 Feb 2021
I have a logical vector, and i want to add elements after the 0's and after the 1's, but a different element after the 0's than the 1's. How do I do this.

Answers (1)

the cyclist
the cyclist on 14 Feb 2021
Here is one way
% Original logical vector input
L = logical([1 0 1 1 0]);
% The numbers to be inserted
oneNum = 6;
zeroNum = 3;
output = [L; zeroNum*ones(1,length(L))];
output(2,L==1) = oneNum;
output = output(:)'
output = 1×10
1 6 0 3 1 6 1 6 0 3
  2 Comments
the cyclist
the cyclist on 15 Feb 2021
If it is always the same number of repeats, then it is a straightforward extension of the above:
% Original logical vector input
L = logical([1 0 1 1 0]);
% The numbers to be inserted
oneNum = 6;
zeroNum = 3;
% Number of repetitions
repeats = 4;
output = [L; zeroNum*ones(repeats,length(L))];
output(2:end,L==1) = oneNum;
output = output(:)'
output = 1×25
1 6 6 6 6 0 3 3 3 3 1 6 6 6 6 1 6 6 6 6 0 3 3 3 3

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!