Я понимаю, что многие из этих вопросов уже задавались ранее, но я не могу найти ответы для себя.
Я довольно свободно говорю в Matlab, но не могу понять эти Python for-loop. Я написал этот небольшой скрипт в Matlab, и я хочу сделать то же самое в Python.
Matlab
h = 2;
w = pi / 2;
t = 0:.01:4;
smP = [1 2]';
r = [h * cos(w * t') 2 * h * sin(w * t')]';
A = zeros(2,2,length(t));
rP = zeros(2,length(t));
for i = 1:length(t)
A(:,:,i) = [cos(w * t(i)) -sin(w * t(i)); sin(w * t(i)) cos(w * t(i))];
rP(:,i) = r(:,i) + A(:,:,i) * smP;
end
plot(rP(1,:),rP(2,:))
Я не могу получить * Индексирование в стиле 1010 * для работы в Python. Я попробовал несколько вещей.
Попытка 1
r = np.matrix([h * np.cos(w * t), 2 * h * np.sin(w * t)])
A = np.array([[np.cos(w * t), -np.sin(w * t)], [np.sin(w * t), np.cos(w * t)]])
rP = []
for i in range(len(t)):
instant = r[:,i] + A[:,:,i] @ smP
rP.append(instant)
Попытка 2
rP = np.zeros([2,len(t)])
for i in range(len(t)):
rP[:][i] = r[:,i] + A[:,:,i] @ smP
Это дает мне список 400 (с моим текущим размером t), который содержит вектор 2x1 в каждом индексе. Это я не могу построить, и это просто плохой способ сохранить мои данные. Очевидно, я хочу матрицу 2xlength (t), где каждый столбец является вектором rP с дискретными временными шагами (точно так же, как код Matlab).
Как я могу выполнить sh эту простую вещь в Python?