Create custom matrix with user-defined parameters

조회 수: 3 (최근 30일)
Blake Seaton
Blake Seaton 2020년 7월 3일
댓글: Blake Seaton 2020년 7월 14일
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일
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
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개)

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by