Interleaving arrays with different sizes
9 views (last 30 days)
Show older comments
So far i have done this, and it works for arrays of the same size:
function output = interleave(x,y)
output(1:2:6)=x;
output(2:2:6)=y;
end
so if x = [[1 2 3] and y= [10 11 12]) the output is [1 10 2 11 3 12]
but how would i alter the function for arrays of differen sizes
i.e. if x= [1 2] and y [-1 -2 -3] the output is [1 -1 2 -2 -3]
2 Comments
Answers (2)
Marco Morganti
on 5 Jan 2017
Hi Matt,
hope this still can be helpful:
function output = interleave(x,y)
lx = numel(x);
ly = numel(y);
l = lx + ly;
i = 1;
j = 1;
k = 1;
output = zeros(1,l);
while (i <= l)
if (j <= lx)
output(i) = x(j);
j = j+1;
i = i+1;
end
if (k <= ly)
output(i) = y(k);
k = k+1;
i = i+1;
end
end
This function is of course much longer than the one you suggested, however it should be able to handle more general cases.
0 Comments
Jos (10584)
on 5 Jan 2017
x = 1:5
y = 10:10:30
xy = [x y]
[~, si] = sort([1:numel(x) 1:numel(y)])
result = xy(si)
0 Comments
See Also
Categories
Find more on Matrix Indexing 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!