2015-11-23 58 views
-3

你能帮我吗? 我有n = 10(10个标签),每个8位值。每个标签都应该有一个随机创建的ID(例如00000100,01000000)。我如何在Matlab中做到这一点?随机创建二进制ID

+0

你需要显示一些代码和澄清你的问题。正如它写的,这个问题应该被关闭,因为它没有提供问题的明确例子。 – PyNEwbie

+0

number_tags = 10. a想要创建10个具有8位的向量。另外我想在每个标签中随机选择数字1。例如: Tag1 = [00100000]; Tag2 = [00000100]; Tag3 = [01000000]; – NikolaC

+0

你如何创建一个[随机整数](http://nl.mathworks.com/help/stats/random.html)和[将其变成二进制数字](http://nl.mathworks.com/help /fixedpoint/ref/bin.html) – Johannes

回答

0

让我们试试这个:

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任一行,并0如果在列中没有任何1)我们必须补充一点:

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

数的一和零:

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

我想要更多的标签。正如你所看到的不适用于Tag3 – NikolaC

+0

在你的问题'n = 10'中,所以它的工作原理。但好吧,我会为任何n做出。对于'Tag3'也是如此,当然,如果您同样添加'Tag3 =零(1,8)'。 –

+0

朋友,你能看到这个: 全部清除 clc; c = 16; r = 8; n = 10; c =零(n,c); 我想在这个基准中的每一行在某个位置上有一个随机的1。好? – NikolaC