Объявление матрицы Matlab в python

#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 с ошибкой округления. Большое спасибо!!