How can I mix two arrays?
22 views (last 30 days)
Show older comments
Given A=[1 3 5 7 9] and B=[2 4 6 8], how can I create C=[1 2 3 4 5 6 7 8 9]?
0 Comments
Accepted Answer
Youssef Khmou
on 15 Jan 2015
Edited: Youssef Khmou
on 15 Jan 2015
This question is general due to the variation of array dimensions, however for a particular case you described, vectors A and B can be mixed by single loop, so the following scheme is valid only when dim(A)=dim(B)+1 as in the example :
A=[1 3 5 7 9];
B=[2 4 6 8];
n=min(length(A),length(B));
C=[];
for t=1:n
C=[C A(t) B(t)];
end
C=[C A(end)];
3 Comments
Stephen23
on 15 Jan 2015
For those who are interested, some references as to why array concatenation in a loop is poor coding practice in MATLAB:
More Answers (1)
Stephen23
on 15 Jan 2015
Edited: Stephen23
on 16 Jan 2015
This can be done simply using indexing, without any loops:
>> A = [1,3,5,7,9];
>> B = [2,4,6,8];
>> C(1:2:2*numel(A)) = A;
>> C(2:2:end) = B
C =
1 2 3 4 5 6 7 8 9
This solution also assumes that numel(A)==numel(B)+1.
Most importantly, for larger arrays this code will be much faster than the accepted solution, so it is the most universal solution.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!