How can Write a function that combines two lists by alternatingly taking elements, e.g. [23,11,70], [1,2,3] → [23,1,11,2,70,3].

9 views (last 30 days)
function C= concat(L1,L2) T=[L1(1),L2(1)]; for i=2:length(L1) T(end+1)=L1(i) T(end+1)=L2(i);
end
C=T;
end

Accepted Answer

Star Strider
Star Strider on 10 Nov 2017
Using the reshape function:
A = [23,11,70];
B = [1,2,3];
Out = reshape([A; B], 1, [])
Out =
23 1 11 2 70 3
  2 Comments
Star Strider
Star Strider on 10 Nov 2017
I am not certain what you are asking.
See if this does what you want:
function C = concat(L1,L2)
C = reshape([L1; L2], 1, [])
end
or using an anonymous function:
concat = @(L1,L2) reshape([L1; L2], 1, []);

Sign in to comment.

More Answers (2)

KL
KL on 10 Nov 2017
No need to use a loop,
A = [1 2 3 4 5];
>> B = 10*A;
>> C = zeros(size([A B]));
>> C(1:2:end) = A;
>> C(2:2:end) = B;
>> C
C =
1 10 2 20 3 30 4 40 5 50

anas birrow
anas birrow on 10 Nov 2017
thanks for all of you

Categories

Find more on Programming in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!