Create custom matrix with user-defined parameters

Hi,
I would like help creating a custom matrix that follows this pattern:
[1 1 -1 1;
1 1 1 -1;
1 2 -1 1;
1 2 1 -1;
1 3 -1 1;
1 3 1 -1;
2 1 -1 1;
2 1 1 -1;
2 2 -1 1;
2 2 1 -1;
2 3 -1 1;
2 3 1 -1;
3 1 -1 1;
3 1 1 -1;
3 2 -1 1;
3 2 1 -1;
3 3 -1 1;
3 3 1 -1;
4 1 -1 1;
4 1 1 -1;
4 2 -1 1;
4 2 1 -1;
4 3 -1 1;
4 3 1 -1]
I want the maximum number to which the first two columns count to be user-determined (e.g., x and y, respectively).
In the above example, x = 4 and y = 3.
Column one counts to x, repeating each integer (2y) times.
Column two counts to y, repeating each integer twice.
Columns three and four alternate between -1 and 1 for the entirety of the matrix.
So the total number of rows for the matrix is always (x * y * 2) which equals 24 in the above example.
Thanks in advance!

2 件のコメント

madhan ravi
madhan ravi 2020 年 7 月 3 日
more explanation needed
Blake Seaton
Blake Seaton 2020 年 7 月 3 日
Sorry, I'm not sure what more I can provide. I would like a block of code that will take a number for x and a number for y and create a matrix with the posted pattern and explanation. There are roundabout ways of getting it done, but because I'm still somewhat of a novice, I can't seem to come up with an elegant way to do it.

サインインしてコメントする。

 採用された回答

madhan ravi
madhan ravi 2020 年 7 月 3 日

0 投票

x = 4 ;
y = 3 ;
[ X, Y ] = meshgrid( 1 : x, 1 : y ) ;
Alternator = repmat( ( - 1 ) .^ ( 1 : numel( X ) ).', 1, 2) ;
z = [ X( : ), Y( : ) ] ;
Wanted = [ repelem( z, 2, 1 ), Alternator( : ) * [ 1, - 1 ] ]

4 件のコメント

Blake Seaton
Blake Seaton 2020 年 7 月 3 日
Outstanding, thank you!
Blake Seaton
Blake Seaton 2020 年 7 月 14 日
Follow up question:
How could this be modified so that the first two columns are never the same number? Following the same pattern as the original question, the end result would look like:
[1 2 -1 1;
1 2 1 -1;
1 3 -1 1;
1 3 1 -1;
2 1 -1 1;
2 1 1 -1;
2 3 -1 1;
2 3 1 -1;
3 1 -1 1;
3 1 1 -1;
3 2 -1 1;
3 2 1 -1;
4 1 -1 1;
4 1 1 -1;
4 2 -1 1;
4 2 1 -1;
4 3 -1 1;
4 3 1 -1]
madhan ravi
madhan ravi 2020 年 7 月 14 日
Wanted( Wanted(:, 1) ~= Wanted(:, 2), :)
Blake Seaton
Blake Seaton 2020 年 7 月 14 日
You are too good... thank you!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by