随机创建二进制 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;
你能帮帮我吗? 我有 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;