Reputation: 8707
I am trying to convert a MATLAB line of code to Python using 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
So In 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])
>>>
The values seems correct to that of Matlab's output but
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>
Are not equal to that of Python's
>>> 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 I doing something wrong or missed out something?
Upvotes: 0
Views: 272
Reputation: 1002
Actually, it is the same in both cases. Set precision options in numpy to see:
np.set_printoptions(precision=6, suppress=True)
Upvotes: 2