Допустим, у меня есть машина с передним полем обзора (180 градусов), и я хочу разрезать эти 180 градусов на несколько интервалов, например, на 30 градусов. и у меня есть набор чисел, и я хочу решить, к какому интервалу принадлежит номер.
Я знаю, как его жестко запрограммировать, но как я могу автоматизировать его, чтобы создать алгоритм, который делает это на основе на количество интервалов.
Если, например, 180 градусов были разделены на 45 градусов, то эти интервалы были бы (0-45) - индекс 0, (45-90) - индекс 1, (90-135 ) - индекс 2, (135-180) - индекс 3 Это означает, что у меня будет вектор размера четыре (один элемент для каждого интервала)
И если у меня есть числа, например, 30 и 150, вектор будет выглядят так: [1, 0, 0, 1]
Как я могу этого добиться?
Это то, что я пытался сделать:
NUMBER_OF_SECTORS = 6
sector_thresholds = []
for i in range(NUMBER_OF_SECTORS+1):
sector_thresholds.append(180/NUMBER_OF_SECTORS * i)
print(sector_thresholds)
list_of_states = []
state_vector = [0] * (NUMBER_OF_SECTORS + 1)
for i in range(1000):
random_number = 360*random.random() # If the number is larger than 180 then it should be ignored
for j in range(NUMBER_OF_SECTORS):
if j == 0:
pass
if sector_thresholds[j-1] <= random_number <= sector_thresholds[j]:
state_vector[j] = random.choice([1,2]) #This shows an assignment error
print(state_vector)
state_vector = []
Как можно Я исправляю это?
Большое спасибо за любую помощь
РЕДАКТИРОВАТЬ: Я пытался улучшить свой код в соответствии с ответом ниже, например:
for i in range(NUMBER_OF_SECTORS+1):
sector_thresholds.append(180/NUMBER_OF_SECTORS * i)
print(sector_thresholds)
list_of_states = []
state_vector = [0] * (NUMBER_OF_SECTORS + 1)
for i in range(1000):
random_number = 360*random.random()
while i % NUMBER_OF_SECTORS: # make sure that the state vector gets cleared after the same amount of iteration as its length
sector = int(np.floor(random_number /(180/NUMBER_OF_SECTORS)))
print(f"sector is {sector}")
if sector <= NUMBER_OF_SECTORS:
state_vector[sector] = 1
print(state_vector)
state_vector = []
но У меня ошибка в строке state_vector[sector] = 1 list assignment index out of range
Я знаю, что наверняка будет какая-нибудь "дурацкая" опечатка, но я не могу ее найти, еще раз спасибо за вашу помощь