我使用rand(1,N)<=0.5
来创建包含1和0的二进制序列。
N可以取0和以上的任何值。
我想要达到的目的是拥有与上述相同的功能,但要确保始终将第一个和最后一个元素设为1。
例如
你看到了逻辑?有没有自动化的方法来实现这一目标?对于N = 2及以上,我猜[1 rand(1,N-2)<=0.5 1]
有效,但我想要的东西也适用于N = 0和N = 1;
由于
答案 0 :(得分:4)
可能最明确的方式是
switch N
case 0
result = [];
case 1
result = 1;
otherwise
result = [1 rand(1,N-2)<=0.5 1];
end
但那个无聊,不是吗?那怎么样?
result = rand(1,N)<.5;
result(mod(1:end, end)<=1) = 1;
答案 1 :(得分:0)
您可以直接使用十进制数字的表示形式:
odd = (randi(2^(N-2)) + 2^(N-2)) * 2 - 1; % random odd number
de2bi(odd, 'left-msb')