title: Converting MATLAB's interp1 to Python interp1d
body: <p>I'm converting a MATLAB code into a Python code.</p>
  
  <p>The code uses the function <code>interp1</code> in MATLAB. I found that the scipy function <code>interp1d</code> should be what I'm after, but I'm not sure. Could you tell me if the code, I implemented is correct?
  My Python version is 3.4.1, MATLAB version is R2013a. However, the code has been implemented around 2010].</p>
  
  <p><strong>MATLAB</strong>:</p>
  
  <pre><code>S_T = [0.0, 2.181716948, 4.363766232, 6.546480392, 8.730192373, ...
        10.91523573, 13.10194482, 15.29065504, 17.48170299, 19.67542671, ...
        21.87216588, 24.07226205, 26.27605882, 28.48390208; ...
       1.0, 1.000382662968538, 1.0020234819906781, 1.0040560245904753, ...
         1.0055690037530718, 1.0046180687475195, 1.000824223678225, ...
         0.9954866694014762, 0.9891408937764872, 0.9822543350571298, ...
         0.97480163751874, 0.9666158376141503, 0.9571711322843011, ...
         0.9460998105962408; ...
       1.0, 0.9992731388936672, 0.9995093132493109, 0.9997021748479805, ...
         0.9982835412406582, 0.9926319477117723, 0.9833685776596993, ...
         0.9730725288209638, 0.9626092685176822, 0.9525234896714959, ...
         0.9426698515488858, 0.9326788630704709, 0.9218100196936996, ...
         0.9095717918978693];
  
  S = transpose(S_T);
  
  dist = 0.00137;
  old = 15.61;
  ll = 125;
  ref = 250;
  start = 225;
  high = 7500;
  low = 2;
  
  U = zeros(low,low,high);
  
  for ii=1:high
      g0= start-ref*dist*ii;
      g1= g0+ll;
      if(g0 &lt;=0.0 &amp;&amp; g1 &gt;= 0.0)
          temp= old/2*(1-cos(2*pi*g0/ll));
          for jj=1:low
              U(jj,jj,ii)= temp;
          end
      end
  end
  
  for ii=1:low
   S_mod(ii,1,:)=interp1(S(:,1),S(:,ii+1),U(ii,ii,:),'linear');
  end
  </code></pre>
  
  <p><strong>Python:</strong></p>
  
  <pre><code>import numpy
  import os
  from scipy import interpolate
  
  S = [[0.0, 2.181716948, 4.363766232, 6.546480392, 8.730192373, 10.91523573, 13.10194482, 15.29065504, \
        17.48170299, 19.67542671, 21.87216588, 24.07226205, 26.27605882, 28.48390208], \
       [1.0, 1.000382662968538, 1.0020234819906781, 1.0040560245904753, 1.0055690037530718, 1.0046180687475195, \
        1.000824223678225, 0.9954866694014762, 0.9891408937764872, 0.9822543350571298, 0.97480163751874, \
        0.9666158376141503, 0.9571711322843011, 0.9460998105962408], \
       [1.0, 0.9992731388936672, 0.9995093132493109, 0.9997021748479805, 0.9982835412406582, 0.9926319477117723, \
        0.9833685776596993, 0.9730725288209638, 0.9626092685176822, 0.9525234896714959, 0.9426698515488858, \
        0.9326788630704709, 0.9218100196936996, 0.9095717918978693]]
  
  dist = 0.00137
  old = 15.61
  ll = 125
  ref = 250
  start = 225
  high = 7500
  low = 2
  
  U = [numpy.zeros( [low, low] ) for _ in range(high)]
  
  for ii in range(high):
      g0 = start - ref * dist * (ii+1)   
      g1 = g0 + ll
      if g0 &lt;=0.0 and g1 &gt;= 0.0:
          for jj in range(low):
              U[ii][jj,jj] = old / 2 * (1 - numpy.cos( 2 * numpy.pi * g0 / ll) )
  
  S_mod = []
  
  for jj in range(high):
      temp = []
      for ii in range(low):
          temp.append(interpolate.interp1d( S[0], S[ii+1], U[jj][ii,ii]))
  
      S_mod.append(temp)
  </code></pre>