Сгенерируйте случайные полиномы с помощью MATLAB

Я хочу сгенерировать случайные двоичные полиномы с параметрами (n,m).

n — количество полиномов, которые необходимо сгенерировать, а m — количество элементов каждого полинома.

В то же время мне нужно, чтобы полином был уникальным. А еще мне нужно исключить результат со всеми элементами равными нулю.

Например, для n=3 и m=3 я ищу что-то вроде [1 0 1] [1 0 0] [1 1 1].

Есть ли какая-нибудь команда в лаборатории матов, которую я могу использовать для получения вышеуказанных результатов?? Я также хотел бы избежать цикла for, если это возможно!

РЕДАКТИРОВАТЬ: я обнаружил, что команда unique(rand(n,m)>=0.5,'rows') выполнит эту работу. Но это не гарантирует, что результат [0 0 0] будет исключен

Любые идеи?


person Wanderer    schedule 11.07.2015    source источник


Ответы (1)


Каждый из ваших полиномов можно интерпретировать как двоичное число от 1 до 2^m-1.

%get a random subset of size n
X=randperm(2^m-1,n);
%convert it to a matrix
X=dec2bin(X)-'0';
person Daniel    schedule 11.07.2015
comment
@Hao Zhu: я видел предложенное вами изменение, это определенно улучшение кода. Для таких улучшений, пожалуйста, напишите комментарий или напишите свой ответ, правки предназначены для ошибок форматирования, опечаток, неработающих ссылок и т. д. - person Daniel; 11.07.2015