2015-03-20 10 views
0

Я пытаюсь преобразовать строку кода MATLAB в Python с помощью Numpy.Преобразование кода MATLAB в Python с использованием numpy

octave:20> fs=10 
fs = 10 
octave:21> [-fs:1/fs:fs] 
ans = 

Columns 1 through 7: 

    -10.00000 -9.90000 -9.80000 -9.70000 -9.60000 -9.50000 -9.40000 

Columns 8 through 14: 

    -9.30000 -9.20000 -9.10000 -9.00000 -8.90000 -8.80000 -8.70000 

Columns 15 through 21: 

    -8.60000 -8.50000 -8.40000 -8.30000 -8.20000 -8.10000 -8.00000 

Columns 22 through 28: 

    -7.90000 -7.80000 -7.70000 -7.60000 -7.50000 -7.40000 -7.30000 

Columns 29 through 35: 

    -7.20000 -7.10000 -7.00000 -6.90000 -6.80000 -6.70000 -6.60000 

Columns 36 through 42: 

    -6.50000 -6.40000 -6.30000 -6.20000 -6.10000 -6.00000 -5.90000 

Columns 43 through 49: 

    -5.80000 -5.70000 -5.60000 -5.50000 -5.40000 -5.30000 -5.20000 

Columns 50 through 56: 

    -5.10000 -5.00000 -4.90000 -4.80000 -4.70000 -4.60000 -4.50000 

Columns 57 through 63: 

    -4.40000 -4.30000 -4.20000 -4.10000 -4.00000 -3.90000 -3.80000 

Columns 64 through 70: 

    -3.70000 -3.60000 -3.50000 -3.40000 -3.30000 -3.20000 -3.10000 

Columns 71 through 77: 

    -3.00000 -2.90000 -2.80000 -2.70000 -2.60000 -2.50000 -2.40000 

Columns 78 through 84: 

    -2.30000 -2.20000 -2.10000 -2.00000 -1.90000 -1.80000 -1.70000 

Columns 85 through 91: 

    -1.60000 -1.50000 -1.40000 -1.30000 -1.20000 -1.10000 -1.00000 

Columns 92 through 98: 

    -0.90000 -0.80000 -0.70000 -0.60000 -0.50000 -0.40000 -0.30000 

Columns 99 through 105: 

    -0.20000 -0.10000 0.00000 0.10000 0.20000 0.30000 0.40000 

Columns 106 through 112: 

    0.50000 0.60000 0.70000 0.80000 0.90000 1.00000 1.10000 

Columns 113 through 119: 

    1.20000 1.30000 1.40000 1.50000 1.60000 1.70000 1.80000 

Columns 120 through 126: 

    1.90000 2.00000 2.10000 2.20000 2.30000 2.40000 2.50000 

Columns 127 through 133: 

    2.60000 2.70000 2.80000 2.90000 3.00000 3.10000 3.20000 

Columns 134 through 140: 

    3.30000 3.40000 3.50000 3.60000 3.70000 3.80000 3.90000 

Columns 141 through 147: 

    4.00000 4.10000 4.20000 4.30000 4.40000 4.50000 4.60000 

Columns 148 through 154: 

    4.70000 4.80000 4.90000 5.00000 5.10000 5.20000 5.30000 

Columns 155 through 161: 

    5.40000 5.50000 5.60000 5.70000 5.80000 5.90000 6.00000 

Columns 162 through 168: 

    6.10000 6.20000 6.30000 6.40000 6.50000 6.60000 6.70000 

Columns 169 through 175: 

    6.80000 6.90000 7.00000 7.10000 7.20000 7.30000 7.40000 

Columns 176 through 182: 

    7.50000 7.60000 7.70000 7.80000 7.90000 8.00000 8.10000 

Columns 183 through 189: 

    8.20000 8.30000 8.40000 8.50000 8.60000 8.70000 8.80000 

Columns 190 through 196: 

    8.90000 9.00000 9.10000 9.20000 9.30000 9.40000 9.50000 

Columns 197 through 201: 

    9.60000 9.70000 9.80000 9.90000 10.00000 

Так в Python:

>>> np.arange(-fs, (fs)+(1./fs), 1./fs) 
array([ -1.00000000e+01, -9.90000000e+00, -9.80000000e+00, 
     -9.70000000e+00, -9.60000000e+00, -9.50000000e+00, 
     -9.40000000e+00, -9.30000000e+00, -9.20000000e+00, 
     -9.10000000e+00, -9.00000000e+00, -8.90000000e+00, 
     -8.80000000e+00, -8.70000000e+00, -8.60000000e+00, 
     -8.50000000e+00, -8.40000000e+00, -8.30000000e+00, 
     -8.20000000e+00, -8.10000000e+00, -8.00000000e+00, 
     -7.90000000e+00, -7.80000000e+00, -7.70000000e+00, 
     -7.60000000e+00, -7.50000000e+00, -7.40000000e+00, 
     -7.30000000e+00, -7.20000000e+00, -7.10000000e+00, 
     -7.00000000e+00, -6.90000000e+00, -6.80000000e+00, 
     -6.70000000e+00, -6.60000000e+00, -6.50000000e+00, 
     -6.40000000e+00, -6.30000000e+00, -6.20000000e+00, 
     -6.10000000e+00, -6.00000000e+00, -5.90000000e+00, 
     -5.80000000e+00, -5.70000000e+00, -5.60000000e+00, 
     -5.50000000e+00, -5.40000000e+00, -5.30000000e+00, 
     -5.20000000e+00, -5.10000000e+00, -5.00000000e+00, 
     -4.90000000e+00, -4.80000000e+00, -4.70000000e+00, 
     -4.60000000e+00, -4.50000000e+00, -4.40000000e+00, 
     -4.30000000e+00, -4.20000000e+00, -4.10000000e+00, 
     -4.00000000e+00, -3.90000000e+00, -3.80000000e+00, 
     -3.70000000e+00, -3.60000000e+00, -3.50000000e+00, 
     -3.40000000e+00, -3.30000000e+00, -3.20000000e+00, 
     -3.10000000e+00, -3.00000000e+00, -2.90000000e+00, 
     -2.80000000e+00, -2.70000000e+00, -2.60000000e+00, 
     -2.50000000e+00, -2.40000000e+00, -2.30000000e+00, 
     -2.20000000e+00, -2.10000000e+00, -2.00000000e+00, 
     -1.90000000e+00, -1.80000000e+00, -1.70000000e+00, 
     -1.60000000e+00, -1.50000000e+00, -1.40000000e+00, 
     -1.30000000e+00, -1.20000000e+00, -1.10000000e+00, 
     -1.00000000e+00, -9.00000000e-01, -8.00000000e-01, 
     -7.00000000e-01, -6.00000000e-01, -5.00000000e-01, 
     -4.00000000e-01, -3.00000000e-01, -2.00000000e-01, 
     -1.00000000e-01, -3.55271368e-14, 1.00000000e-01, 
     2.00000000e-01, 3.00000000e-01, 4.00000000e-01, 
     5.00000000e-01, 6.00000000e-01, 7.00000000e-01, 
     8.00000000e-01, 9.00000000e-01, 1.00000000e+00, 
     1.10000000e+00, 1.20000000e+00, 1.30000000e+00, 
     1.40000000e+00, 1.50000000e+00, 1.60000000e+00, 
     1.70000000e+00, 1.80000000e+00, 1.90000000e+00, 
     2.00000000e+00, 2.10000000e+00, 2.20000000e+00, 
     2.30000000e+00, 2.40000000e+00, 2.50000000e+00, 
     2.60000000e+00, 2.70000000e+00, 2.80000000e+00, 
     2.90000000e+00, 3.00000000e+00, 3.10000000e+00, 
     3.20000000e+00, 3.30000000e+00, 3.40000000e+00, 
     3.50000000e+00, 3.60000000e+00, 3.70000000e+00, 
     3.80000000e+00, 3.90000000e+00, 4.00000000e+00, 
     4.10000000e+00, 4.20000000e+00, 4.30000000e+00, 
     4.40000000e+00, 4.50000000e+00, 4.60000000e+00, 
     4.70000000e+00, 4.80000000e+00, 4.90000000e+00, 
     5.00000000e+00, 5.10000000e+00, 5.20000000e+00, 
     5.30000000e+00, 5.40000000e+00, 5.50000000e+00, 
     5.60000000e+00, 5.70000000e+00, 5.80000000e+00, 
     5.90000000e+00, 6.00000000e+00, 6.10000000e+00, 
     6.20000000e+00, 6.30000000e+00, 6.40000000e+00, 
     6.50000000e+00, 6.60000000e+00, 6.70000000e+00, 
     6.80000000e+00, 6.90000000e+00, 7.00000000e+00, 
     7.10000000e+00, 7.20000000e+00, 7.30000000e+00, 
     7.40000000e+00, 7.50000000e+00, 7.60000000e+00, 
     7.70000000e+00, 7.80000000e+00, 7.90000000e+00, 
     8.00000000e+00, 8.10000000e+00, 8.20000000e+00, 
     8.30000000e+00, 8.40000000e+00, 8.50000000e+00, 
     8.60000000e+00, 8.70000000e+00, 8.80000000e+00, 
     8.90000000e+00, 9.00000000e+00, 9.10000000e+00, 
     9.20000000e+00, 9.30000000e+00, 9.40000000e+00, 
     9.50000000e+00, 9.60000000e+00, 9.70000000e+00, 
     9.80000000e+00, 9.90000000e+00, 1.00000000e+01]) 
>>> 

Значения кажется правильным, что производства Matlab, но

octave:22> sincNum = sin(pi*[-fs:1/fs:fs]); 
octave:23> sincNum 
sincNum = 

Columns 1 through 7: 

    0.00000 0.30902 0.58779 0.80902 0.95106 1.00000 0.95106 

Columns 8 through 14: 

    0.80902 0.58779 0.30902 -0.00000 -0.30902 -0.58779 -0.80902 

Columns 15 through 21: 

    -0.95106 -1.00000 -0.95106 -0.80902 -0.58779 -0.30902 0.00000 

Columns 22 through 28: 

    0.30902 0.58779 0.80902 0.95106 1.00000 0.95106 0.80902 

Columns 29 through 35: 

    0.58779 0.30902 -0.00000 -0.30902 -0.58779 -0.80902 -0.95106 

Columns 36 through 42: 

    -1.00000 -0.95106 -0.80902 -0.58779 -0.30902 0.00000 0.30902 

Columns 43 through 49: 

    0.58779 0.80902 0.95106 1.00000 0.95106 0.80902 0.58779 

Columns 50 through 56: 

    0.30902 -0.00000 -0.30902 -0.58779 -0.80902 -0.95106 -1.00000 

Columns 57 through 63: 

    -0.95106 -0.80902 -0.58779 -0.30902 0.00000 0.30902 0.58779 

Columns 64 through 70: 

    0.80902 0.95106 1.00000 0.95106 0.80902 0.58779 0.30902 

Columns 71 through 77: 

    -0.00000 -0.30902 -0.58779 -0.80902 -0.95106 -1.00000 -0.95106 

Columns 78 through 84: 

    -0.80902 -0.58779 -0.30902 0.00000 0.30902 0.58779 0.80902 

Columns 85 through 91: 

    0.95106 1.00000 0.95106 0.80902 0.58779 0.30902 -0.00000 

Columns 92 through 98: 

    -0.30902 -0.58779 -0.80902 -0.95106 -1.00000 -0.95106 -0.80902 

Columns 99 through 105: 

    -0.58779 -0.30902 0.00000 0.30902 0.58779 0.80902 0.95106 

Columns 106 through 112: 

    1.00000 0.95106 0.80902 0.58779 0.30902 0.00000 -0.30902 

Columns 113 through 119: 

    -0.58779 -0.80902 -0.95106 -1.00000 -0.95106 -0.80902 -0.58779 

Columns 120 through 126: 

    -0.30902 -0.00000 0.30902 0.58779 0.80902 0.95106 1.00000 

Columns 127 through 133: 

    0.95106 0.80902 0.58779 0.30902 0.00000 -0.30902 -0.58779 

Columns 134 through 140: 

    -0.80902 -0.95106 -1.00000 -0.95106 -0.80902 -0.58779 -0.30902 

Columns 141 through 147: 

    -0.00000 0.30902 0.58779 0.80902 0.95106 1.00000 0.95106 

Columns 148 through 154: 

    0.80902 0.58779 0.30902 0.00000 -0.30902 -0.58779 -0.80902 

Columns 155 through 161: 

    -0.95106 -1.00000 -0.95106 -0.80902 -0.58779 -0.30902 -0.00000 

Columns 162 through 168: 

    0.30902 0.58779 0.80902 0.95106 1.00000 0.95106 0.80902 

Columns 169 through 175: 

    0.58779 0.30902 0.00000 -0.30902 -0.58779 -0.80902 -0.95106 

Columns 176 through 182: 

    -1.00000 -0.95106 -0.80902 -0.58779 -0.30902 -0.00000 0.30902 

Columns 183 through 189: 

    0.58779 0.80902 0.95106 1.00000 0.95106 0.80902 0.58779 

Columns 190 through 196: 

    0.30902 0.00000 -0.30902 -0.58779 -0.80902 -0.95106 -1.00000 

Columns 197 through 201: 

    -0.95106 -0.80902 -0.58779 -0.30902 -0.00000 

octave:24> 

ли не равна Пайтона

>>> sincNum = np.sin(np.dot(np.pi, np.array(np.arange(-fs, (fs)+(1./fs), 1./fs)))) 
>>> sincNum 
array([ 1.22464680e-15, 3.09016994e-01, 5.87785252e-01, 
     8.09016994e-01, 9.51056516e-01, 1.00000000e+00, 
     9.51056516e-01, 8.09016994e-01, 5.87785252e-01, 
     3.09016994e-01, 9.55595892e-15, -3.09016994e-01, 
     -5.87785252e-01, -8.09016994e-01, -9.51056516e-01, 
     -1.00000000e+00, -9.51056516e-01, -8.09016994e-01, 
     -5.87785252e-01, -3.09016994e-01, -2.03365646e-14, 
     3.09016994e-01, 5.87785252e-01, 8.09016994e-01, 
     9.51056516e-01, 1.00000000e+00, 9.51056516e-01, 
     8.09016994e-01, 5.87785252e-01, 3.09016994e-01, 
     3.11171703e-14, -3.09016994e-01, -5.87785252e-01, 
     -8.09016994e-01, -9.51056516e-01, -1.00000000e+00, 
     -9.51056516e-01, -8.09016994e-01, -5.87785252e-01, 
     -3.09016994e-01, -4.54504897e-14, 3.09016994e-01, 
     5.87785252e-01, 8.09016994e-01, 9.51056516e-01, 
     1.00000000e+00, 9.51056516e-01, 8.09016994e-01, 
     5.87785252e-01, 3.09016994e-01, 5.44547386e-14, 
     -3.09016994e-01, -5.87785252e-01, -8.09016994e-01, 
     -9.51056516e-01, -1.00000000e+00, -9.51056516e-01, 
     -8.09016994e-01, -5.87785252e-01, -3.09016994e-01, 
     -6.70117012e-14, 3.09016994e-01, 5.87785252e-01, 
     8.09016994e-01, 9.51056516e-01, 1.00000000e+00, 
     9.51056516e-01, 8.09016994e-01, 5.87785252e-01, 
     3.09016994e-01, 7.77923069e-14, -3.09016994e-01, 
     -5.87785252e-01, -8.09016994e-01, -9.51056516e-01, 
     -1.00000000e+00, -9.51056516e-01, -8.09016994e-01, 
     -5.87785252e-01, -3.09016994e-01, -8.94610910e-14, 
     3.09016994e-01, 5.87785252e-01, 8.09016994e-01, 
     9.51056516e-01, 1.00000000e+00, 9.51056516e-01, 
     8.09016994e-01, 5.87785252e-01, 3.09016994e-01, 
     1.00241697e-13, -3.09016994e-01, -5.87785252e-01, 
     -8.09016994e-01, -9.51056516e-01, -1.00000000e+00, 
     -9.51056516e-01, -8.09016994e-01, -5.87785252e-01, 
     -3.09016994e-01, -1.11611792e-13, 3.09016994e-01, 
     5.87785252e-01, 8.09016994e-01, 9.51056516e-01, 
     1.00000000e+00, 9.51056516e-01, 8.09016994e-01, 
     5.87785252e-01, 3.09016994e-01, 1.22691087e-13, 
     -3.09016994e-01, -5.87785252e-01, -8.09016994e-01, 
     -9.51056516e-01, -1.00000000e+00, -9.51056516e-01, 
     -8.09016994e-01, -5.87785252e-01, -3.09016994e-01, 
     -1.34359871e-13, 3.09016994e-01, 5.87785252e-01, 
     8.09016994e-01, 9.51056516e-01, 1.00000000e+00, 
     9.51056516e-01, 8.09016994e-01, 5.87785252e-01, 
     3.09016994e-01, 1.46028655e-13, -3.09016994e-01, 
     -5.87785252e-01, -8.09016994e-01, -9.51056516e-01, 
     -1.00000000e+00, -9.51056516e-01, -8.09016994e-01, 
     -5.87785252e-01, -3.09016994e-01, -1.56809261e-13, 
     3.09016994e-01, 5.87785252e-01, 8.09016994e-01, 
     9.51056516e-01, 1.00000000e+00, 9.51056516e-01, 
     8.09016994e-01, 5.87785252e-01, 3.09016994e-01, 
     1.67589866e-13, -3.09016994e-01, -5.87785252e-01, 
     -8.09016994e-01, -9.51056516e-01, -1.00000000e+00, 
     -9.51056516e-01, -8.09016994e-01, -5.87785252e-01, 
     -3.09016994e-01, -1.78370472e-13, 3.09016994e-01, 
     5.87785252e-01, 8.09016994e-01, 9.51056516e-01, 
     1.00000000e+00, 9.51056516e-01, 8.09016994e-01, 
     5.87785252e-01, 3.09016994e-01, 1.89151078e-13, 
     -3.09016994e-01, -5.87785252e-01, -8.09016994e-01, 
     -9.51056516e-01, -1.00000000e+00, -9.51056516e-01, 
     -8.09016994e-01, -5.87785252e-01, -3.09016994e-01, 
     -2.03484397e-13, 3.09016994e-01, 5.87785252e-01, 
     8.09016994e-01, 9.51056516e-01, 1.00000000e+00, 
     9.51056516e-01, 8.09016994e-01, 5.87785252e-01, 
     3.09016994e-01, 2.14265003e-13, -3.09016994e-01, 
     -5.87785252e-01, -8.09016994e-01, -9.51056516e-01, 
     -1.00000000e+00, -9.51056516e-01, -8.09016994e-01, 
     -5.87785252e-01, -3.09016994e-01, -2.25045609e-13]) 
>>> 

Am Я делаю что-то неправильно или м что-то выдумал?

+0

Не показывать нам 200 значений, когда 10 будет достаточно. – hpaulj

+0

Вы можете упростить python 'np.sin (np.pi * np.arange (...))' – hpaulj

ответ

2

Фактически, в обоих случаях это то же самое. Настройка параметров точности в NumPy, чтобы увидеть:

np.set_printoptions(precision=6, suppress=True) 
Смежные вопросы