How do I add two columns to a matrix in ascending order?

I need a matrix which numbers ascend in the following way:
If I have the columns:
x=[1 2 3]
y=[4 5 6]
I want the matrix to be like:
A=[1 4
1 5
1 6
2 4
2 5
2 6
3 4
3 5
3 6]
I hope someone can help me with this.

 Accepted Answer

x=[1 2 3]
y=[4 5 6]
x1=repmat(x,numel(y),1)
out=[x1(:) repmat(y',numel(x),1)]

5 Comments

Thank you for your answer but it still does not work for the case I have. I have a column of 514 elements and a column of 80 elements. When I compute the code it gives something like:
A=[. .
. .
. .
512 38
513 39
514 40]
But I actually need:
A=[001 01
001 02
001 03
. .
. .
. .
514 38
514 39
514 40]
What are the sizes of x and y, type
size(y)
@Glenn: What does "001" exactly mean? Numbers do not have leading zeros. If you are talking of strings, please explain this explicitly.
I think Azzi's solution does create the wanted result. Did you copy his code exactly?
I got it myself. Thank you for the answer. I used this code:
x1=repmat(i,numel(j),1);
x1=sortrows(x1);
out=[x1(:) repmat(j,numel(i),1)]
I meant to say 1 in stead of 001. But I allready got the solution I wanted. Thanks

Sign in to comment.

More Answers (2)

x = repmat(x,numel(y),1)
y = repmat(y,1,size(x,2))
A = [x(:) y(:)]

Categories

Find more on Simulink 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!