Я пишу код для вычисления угла атаки и угла бокового скольжения самолета на основе ориентации самолета и глобального вектора скорости. Все мои данные хранятся в фрейме данных. Чтобы вычислить углы, мне сначала нужно определить скорость относительно самолета, и я делаю это с помощью этого фрагмента кода. Отсюда легко получить угол атаки и угол бокового скольжения.
Этот код работает, но мне кажется, что мне не хватает чего-то, что могло бы заставить его работать быстрее. Есть у кого идеи?
# Calculate aircraft component velocities
df['a11'] = np.cos(df['Pitch']) * np.cos(df['Yaw'])
df['a12'] = np.cos(df['Pitch']) * np.sin(df['Yaw'])
df['a13'] = -1 * np.sin(df['Pitch'])
df['a21'] = np.sin(df['Pitch']) * np.sin(df['Roll']) * np.cos(df['Yaw']) - np.cos(df['Roll']) * np.sin(df['Yaw'])
df['a22'] = np.sin(df['Pitch']) * np.sin(df['Roll']) * np.sin(df['Yaw']) + np.cos(df['Roll']) * np.cos(df['Yaw'])
df['a23'] = np.sin(df['Roll']) * np.cos(df['Pitch'])
df['a31'] = np.cos(df['Yaw']) * np.cos(df['Roll']) * np.sin(df['Pitch']) + np.sin(df['Roll']) * np.sin(df['Yaw'])
df['a32'] = np.sin(df['Yaw']) * np.cos(df['Roll']) * np.sin(df['Pitch']) - np.sin(df['Roll']) * np.cos(df['Yaw'])
df['a33'] = np.cos(df['Roll']) * np.cos(df['Pitch'])
df['Vxx'] = 0
df['Vyy'] = 0
df['Vzz'] = 0
for idx, row in df.iterrows():
A = [[row['a11'], row['a12'], row['a13']],
[row['a21'], row['a22'], row['a23']],
[row['a31'], row['a32'], row['a33']]]
B = [[row['Vx']], [row['Vy']], [row['Vz']]]
result = list()
for i in range(len(A)):
result.append([0])
for i in range(3):
for j in range(1):
for k in range(len(B)):
result[j] += A[k] * B[k][j]
df.loc[idx, 'Vxx'] = result[0][0]
df.loc[idx, 'Vyy'] = result[1][0]
df.loc[idx, 'Vzz'] = result[2][0]
Подробнее здесь: https://stackoverflow.com/questions/779 ... me-columns
Оптимизация большого количества матричных умножений из столбцов данных. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение