Interweaving vectors

matlab, vector

Solution

Here's some code that will accomplish what you want:

nums   = rand(1,3)
output = zeros(1,2*numel(nums));
output(2:2:end) = nums

The output is the following:

nums =

    0.9134    0.6324    0.0975


output =

         0    0.9134         0    0.6324         0    0.0975

Following the style of the other two answers, you could get your desired zeros output with the following:

nums = rand(1,3);
reshape([zeros(size(nums));nums],1,[])

Obviously, `nums` should be replaced with the vector you'd like to use. As mentioned, you should make sure it's a row vector before calling `reshape`.

Problem

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.

Original source