I would like to interweave two vectors in MATLAB. In fact, I'd actually just like to add a zero between each element, but I figured I'd ask the question in such a way that I'd learn how to apply this to other situations.
My specific application:
I'd like to take a vector (e.g. [1 2 3]
) and output [0 1 0 2 0 3]
.
The wider question:
How would I do this with two different vectors, e.g. [1 2 3]
and [9 8 7]
interweaving to produce [9 1 8 2 7 3]
.
Any help greatly appreciated, in either or both of the above questions.
I'd make use of the internal layout of MATLAB vectors: They are stored column-major, that is, values in a column change fastest. To interleave two vectors a
and b
, simply do:
ar = a(:).'; % make sure ar is a row vector
br = b(:).'; % make sure br is a row vector
A = [ar;br]; % concatenate them vertically
c = A(:); % flatten the result
Try
reshape([[9 8 7];[1 2 3]],1,[])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With