matlab - A table with 2 columns where one column increases sequentially while the other column displaying the same number till a limit is reached -


i have been trying write code users enters 2 numbers in order 2 columns. hard explain words trying achieve here example:

if user inputs a = 1 , b = 1, following table should created:

ans =  1    1 

if user inputs a = 2 , b = 2:

ans =  1    1 1    2 2    1 2    2 

if user inputs a = 2 , b = 5:

ans =  1    1 1    2 1    3 1    4 1    5 2    1 2    2 2    3 2    4 2    5 

for other values of a , b, matrix should constructed according above shown sequence.

this can achieved straight-forward use of repelem , repmat:

[repelem((1:a).',b),repmat((1:b).',a,1)] 

a more elegant way using meshgrid , reshape after:

[a,b] = meshgrid(1:a,1:b); [a(:),b(:)] 

let's create anonymous function , test first approach:

>> fun = @(a,b) [repelem((1:a).',b),repmat((1:b).',a,1)];  >> fun(1,1) ans =      1     1  >> fun(2,2) ans =      1     1      1     2      2     1      2     2  >> fun(2,5) ans =      1     1      1     2      1     3      1     4      1     5      2     1      2     2      2     3      2     4      2     5 

Comments

Popular posts from this blog

wordpress - (T_ENDFOREACH) php error -

Export Excel workseet into txt file using vba - (text and numbers with formulas) -

Using django-mptt to get only the categories that have items -