随机创建二进制 ID

Random creating binary ID

你能帮帮我吗? 我有 n = 10(十个标签),每个标签有 8 位值。每个标签的 ID 中都应该有一个随机创建的 1(例如 00000100、01000000)。我如何在 Matlab 中执行此操作?

让我们试试这个:

n = 10;
r = 8;
k = randi(r,1,n);
Tag  = zeros(r,n);
Tag(r*(find(k)-1) + k)=1;
Tag = Tag';

所以:

k =

8     8     5     2     2     3     7     3     7     2

Tag =

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

现在每个 - 你的标签。例如,Tag1 = Tag(1,:).

在这种情况下,让我们找到所需的结果: 如果我们只需要逻辑值(如果任何行中有 1 则为 1,如果列中没有任何 1 则为 0)我们必须添加:

result = sum(Tag);
result(find(result))=1
result =
0     1     1     0     1     0     1     1

1 和 0 的个数:

c1 = sum(result);
c0 = numel(result) - c1;