我想像在MATLAB中一样模拟Python中的脉冲幅度调制(PAM)的误码率(BER)。
我尝试使用ii作为索引变量来运行循环,但出现错误,提示“具有多个元素的数组的真值不明确”。我尝试使用Google搜索,但无法理解答案。我已经在MATLAB中进行编码,现在想学习Python。我是Python的入门者。
N = int(1e6); # number of bits
for ii in range(N):
if data_bits[ii]==1:
y = sm
我在data_bits [ii] == 1行出现错误。在MATLAB中不会发生这种情况。
注意:我正在显示有问题的部分。这段代码可能并不完整,而只是突出了我在理解上遇到的困难。
答案 0 :(得分:1)
您不会使用for循环开始。您可以简单地“选择”正确的值并将其值设置为其他值:
import numpy as np
arr = np.random.rand(10,1)
print(arr)
# select all values > 0.5 and set to 5
arr[(arr>0.5)] = 5
print(arr)
输出:
# random values to begin with
[[0.00859812]
[0.03146223]
[0.55717924]
[0.14131905]
[0.52429833]
[0.45643492]
[0.4409319 ]
[0.96135169]
[0.41511691]
[0.33970605]]
# after selecting and setting to 5
[[0.00859812]
[0.03146223]
[5. ]
[0.14131905]
[5. ]
[0.45643492]
[0.4409319 ]
[5. ]
[0.41511691]
[0.33970605]]