#python #matlab #numpy
#python #matlab #numpy
Вопрос:
У меня есть старый код Matlab, который я пытаюсь преобразовать в Python. Инженер, который написал его изначально, говорит, что не помнит, как это работает, и я как бы застрял.
c=10;
s=5;
t=2*pi/s:2*pi/s:2*pi*c;
Мой маленький мозг python не понимает, как t может быть массивом 1×50. Похоже, что это должен быть вектор длины 3 или трехмерная матрица.
Может кто-нибудь сказать мне, как перевести это объявление t на python??
Комментарии:
1. t=start:step:end; генерирует вектор, начинающийся с начала, с шагом шага и заканчивающийся в конце. Вы можете понять, почему матрица равна 1×50. Вы можете использовать linspace в MATLAB (и в Python) для достижения того же.
Ответ №1:
В сеансе Octave:
>> c=10;
>> s=5;
>> t=2*pi/s:2*pi/s:2*pi*c;
>> 2*pi/s
ans = 1.2566
>> 2*pi*c
ans = 62.832
В ipython
, эквивалент (игнорируя проблему с конечной точкой):
In [136]: c,s = 10,5
In [137]: 2*np.pi/s
Out[137]: 1.2566370614359172
In [138]: 2*np.pi*c
Out[138]: 62.83185307179586
In [139]: np.arange(2*np.pi/s, 2*np.pi*c, 2*np.pi/s).shape
Out[139]: (49,)
MATLAB использует start:step:stop
Более тесное сопряжение:
tt = linspace(2*pi/s, 2*pi*c, 50)
np.linspace(2*np.pi/s, 2*np.pi*c, 50)
Комментарии:
1. Я все еще не совсем понимаю это, но np.linspace(2 * np.pi / s, 2 * np.pi * c, 50) сопоставляет мой вывод Matlab с ошибкой округления. Большое спасибо!!