Оптимизация большого количества матричных умножений из столбцов данных.Python

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Оптимизация большого количества матричных умножений из столбцов данных.

Сообщение Гость »

Я пишу код для вычисления угла атаки и угла бокового скольжения самолета на основе ориентации самолета и глобального вектора скорости. Все мои данные хранятся в фрейме данных. Чтобы вычислить углы, мне сначала нужно определить скорость относительно самолета, и я делаю это с помощью этого фрагмента кода. Отсюда легко получить угол атаки и угол бокового скольжения.
Этот код работает, но мне кажется, что мне не хватает чего-то, что могло бы заставить его работать быстрее. Есть у кого идеи?
# 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»