在matlab中使用随机二进制元素创建矩阵

Yus*_*sef 11 matlab

我想在matlab中创建一个带有500个单元格(50行,10列)的矩阵,如何通过随机二进制数字创建和初始化它?我想要50*10比例的这样的东西作为样本3*4

0 1 1 1
0 0 0 0
1 1 1 1

在它之后,如何获得任何行的十进制方程?比如第1行等于7的十进制数

ang*_*nor 11

为什么不用randi来生成随机整数?

A = randi([0 1], 50, 10);
Run Code Online (Sandbox Code Playgroud)

并将二进制行转换为数字 - 如前面的答案:

bin2dec(num2str(A(n,:)))
Run Code Online (Sandbox Code Playgroud)


Rod*_*uis 5

试试这个:

A = rand(50, 10) > 0.5;
Run Code Online (Sandbox Code Playgroud)

n第th行的十进制等值由下式给出:

 bin2dec(num2str(A(n,:)))
Run Code Online (Sandbox Code Playgroud)

或者,如果您愿意,

sum( A(n,:) .* 2.^(size(A,2)-1:-1:0) )   % for big endian
sum( A(n,:) .* 2.^(0:size(A,2)-1) )      % for little endian
Run Code Online (Sandbox Code Playgroud)

这比几倍快bin2dec.


bla*_*bla 5

另外一个选项:

 A=round(rand(50,10));
Run Code Online (Sandbox Code Playgroud)

第n行的十进制eq由下式给出:

 bin2dec(num2str(A(n,:)))
Run Code Online (Sandbox Code Playgroud)