1

我正在尝试将 Matlab 代码转换为 Python,但是当我在数组中附加零时收到错误消息。

Matlab代码:

N_bits=1e5;
a1=[0,1];
bits=a1(ceil(length(a1)*rand(1,N_bits)));
bits=[0 0 0 0 0 0 0 0 bits];

蟒蛇代码:

a1=array([0,0,1])
N_bits=1e2
a2=arange(0,2,1)
## Transmitter ##
bits1=ceil(len(a2)*rand(N_bits))
bits=a1[array(bits1,dtype=int)]
bits=array([0,0,0,0,0,0,0,0, bits])

我在最后一行收到错误:

错误:
位=数组([0,0,0,0,0,0,0,0,位])

ValueError:使用序列设置数组元素。
4

1 回答 1

5

您想将列表与数组一起加入,因此请尝试

bits=concatenate(([0,0,0,0,0,0,0,0], bits))

concatenate()在哪里numpy.concatenate()。您也可以使用zeros(8, dtype=int)来代替零列表(请参阅 参考资料numpy.zeros())。

与 Matlab 不同,[0,0,0,0,0,0,0,0, bits]在 Python 中创建一个列表,其中初始零后跟一个嵌入列表。

MATLAB:

>> x = [1,2,3]

x =

     1     2     3

>> [0,0,x]

ans =

     0     0     1     2     3

Python:

>>> x = [1,2,3]
>>>
>>> [0,0,x]
[0, 0, [1, 2, 3]]
>>> 
>>> [0,0] + x
[0, 0, 1, 2, 3]
于 2013-08-14T20:15:55.877 回答