How to generate a matrix with entries of -1 and +1 of size N x M where all the columns are unique ?

1 visualización (últimos 30 días)
I want to create a matrix of size N x M, where each matrix element can be either -1 or +1 . The matrix must have unique columns
For N = 2, maximum number of 2 sized vectors possible with -1 and +1 are 2^N .
So, for N =2 and M =4
matrix would be
1 1 -1 -1
1 -1 1 -1
So, for a given N and M . I must get said matrix
Thanks a lot before hand.
  3 comentarios
Sai Teja Suggala
Sai Teja Suggala el 7 de Mzo. de 2022
Yes @Davide Masiello, I intend to expand it . My N would be 64. For which 2^64 would be my maximum number of columns. But I just want to limit it to say 1000 . Matrix of size ( 64 x 1000) with -1 and +1 as entries..given all columns are unique..

Iniciar sesión para comentar.

Respuesta aceptada

Bruno Luong
Bruno Luong el 7 de Mzo. de 2022
Editada: Bruno Luong el 7 de Mzo. de 2022
N = 3;
M = 5;
A = (dec2bin(randperm(2^N,M)-1,N)-'0')'*2-1
A = 3×5
1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1

Más respuestas (2)

David Hill
David Hill el 7 de Mzo. de 2022
M=10;N=7;
m=unique((-1).^randi(2,2*M,N),'rows')';
m=m(1:N,1:M);
  1 comentario
Bruno Luong
Bruno Luong el 9 de Mzo. de 2022
Sorry but you accepted answer is not robust
N=10;
M=2^N; % 1024
m=unique((-1).^randi(2,2*M,N),'rows')';
m=m(1:N,1:M)
Index in position 2 exceeds array bounds. Index must not exceed 893.

Iniciar sesión para comentar.


Jan
Jan el 7 de Mzo. de 2022
N = 3;
M = 8;
R = 1 - 2 * rem(floor(pow2(1-N:0).' .* (0:M-1)), 2)
R = 3×8
1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by