Upgrading from Matlab ===================== **Chris R. Smith** Here are some one-to-one translations for many popular functions in Matlab and python that should make it easier to switch from Matlab to Python System functions ---------------- +------------------+-------------------+-------------+ | Matlab Function | Python Equivalent | Description | +==================+===================+=============+ | addpath | sys.path.append | Add to path | +------------------+-------------------+-------------+ File I/O -------- +-----------------+--------------------------------------------+-------------------------------------------------------+ | Matlab Function | Python Equivalent | Description | +=================+============================================+=======================================================+ | dlmread | either read and parse or skimage.io.imread | Read ASCII-delimited file of numeric data into matrix | +-----------------+--------------------------------------------+-------------------------------------------------------+ | imread | pyplot.imread | read image file; N is number of files used | +-----------------+--------------------------------------------+-------------------------------------------------------+ Data Type --------- +-----------------+-------------------+-----------------------------------------------+ | Matlab Function | Python Equivalent | Description | +=================+===================+===============================================+ | int | numpy.int | Convert data to signed integer | +-----------------+-------------------+-----------------------------------------------+ | double | numpy.float | Convert data to double | +-----------------+-------------------+-----------------------------------------------+ | real | numpy.real | Return the real part of a complex number | +-----------------+-------------------+-----------------------------------------------+ | imag | numpy.imag | Return the imaginary part of a complex number | +-----------------+-------------------+-----------------------------------------------+ Mathematics ----------- +------------------+-------------------------------+-------------------------------+ | Matlab Function | Python Equivalent | Description | +==================+===============================+===============================+ | sqrt | math.sqrt or numpy.sqrt | Square root | +------------------+-------------------------------+-------------------------------+ | erf | math.erf or scipy.special.erf | Error function | +------------------+-------------------------------+-------------------------------+ | atan2 | math.erf or numpy.atan2 | Four-quadrant inverse tangent | +------------------+-------------------------------+-------------------------------+ | abs | abs or numpy.abs | Absolute value | +------------------+-------------------------------+-------------------------------+ | exp | exp or numpy.exp | Exponential function | +------------------+-------------------------------+-------------------------------+ | sin | sin or numpy.sin | Sine function | +------------------+-------------------------------+-------------------------------+ Array Creation -------------- +-----------------+----------------------------+-------------------------------------------------+ | Matlab Function | Python Equivalent | Description | +=================+============================+=================================================+ | zeros | numpy.zeros | Create an array of zeros | +-----------------+----------------------------+-------------------------------------------------+ | meshgrid | numpy.meshgrid | Create grid of coordinates in 2 or 3 dimensions | +-----------------+----------------------------+-------------------------------------------------+ | ndgrid | numpy.mgrid or numpy.ogrid | Rectangular grid in N-D space | +-----------------+----------------------------+-------------------------------------------------+ Advanced functions ------------------ +-----------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | Matlab Function | Python Equivalent | Description | +=================+======================================================+======================================================================================================+ | permute | numpy.transpose | Rearrange dimensions of N-dimensional array | +-----------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | angle | numpy.angle | Phase angles for elements in complex array | +-----------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | max | numpy.max | Return the maximum element in an array | +-----------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | min | numpy.min | Return the minimum element in an array | +-----------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | reshape | numpy.reshape | Reshape array | +-----------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | mean | numpy.mean | Take mean along specified dimension | +-----------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | size | numpy.size | get the total number of entries in an array | +-----------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | cell2mat | numpy.vstack([numpy.hstack(cell) for cell in cells]) | converts data structure from cell to mat; joins multiple arrays of different sizes into single array | +-----------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | repmat | numpy.tile | Repeat copies of an array | +-----------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | unwrap | np.unwrap | Shift the phase of an array so that there are no jumps of more than the desired angle (default pi) | +-----------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------+ Array Indexing -------------- +-----------------+-------------------+--------------------------------------------------------------------+ | Matlab Function | Python Equivalent | Description | +=================+===================+====================================================================+ | find | numpy.where | Find all indices of a matrix for which a logical statement is true | +-----------------+-------------------+--------------------------------------------------------------------+ | isnan | numpy.isnan | checks each array entry to see if it is NaN | +-----------------+-------------------+--------------------------------------------------------------------+ | isinf | numpy.isinf | checks each array entry to see if it is Inf | +-----------------+-------------------+--------------------------------------------------------------------+ | ischar | numpy.ischar | checks each array entry to see if it is a character | +-----------------+-------------------+--------------------------------------------------------------------+ Advanced functions ------------------ +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Matlab Function | Python Equivalent | Description | +=================+==============================================================================+======================================================================================================================================================================================================================================+ | fft2 | numpy.fft.fft2 | 2D fast Fourier transform | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | fftshift | numpy.fft.fftshift | shift zero-frequency component to the center of the spectrum | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ifftshift | numpy.fft.ifftshift | inverse fftshift | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ifft2 | numpy.fft.fifft2 | inverse 2d fft | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | interp2 | scipy.interpolate.RectBivariateSpline or scipy.interpolate.interp2 | Interpolation for 2-D gridded data in meshgrid format | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | imshowpair | skimage.measure.structural_similarity | Compare differences between 2 images | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | imregconfig | | Creates configurations to perform intensity-based image registration | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | imregister | | Intensity-based image registration | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | imregtform | skimage.feature.register_translation or skimage.transform.estimate_transform | Estimate geometric transfomation to align two images | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | imwarp | skimage.transform.warp | Apply geometric transformation to an image | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | imref2d | | Reference 2d image to xy-coordinates | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | corr2 | scipy.signal.correlate2d | 2d correlation coefficient | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | optimset | | Create of edit optimizations options for passing to fminbnd, fminsearch, fzero, or lsqnonneg | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | lsqcurvefit | scipy.optimize.curve_fit | Solve nonlinear curve-fitting problems | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | fastica | sklearn.decomposition.FastICA | fast fixed-point algorithm for independent component analysis and projection pursuit | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | kmeans | sklearn.cluster.Kmeans | kmeans clustering | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | fsolve | scipy.optimize.root(func, x0, method='anderson') | Root finding. Scipy does not have a trust-region dogleg method that functions exactly like Matlab's fsolve. The 'anderson' method reproduces the results in many cases. Other methods may need to be explored for other problems. | +-----------------+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Basic Plotting -------------- +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | Matlab Function | Python Equivalent | Description | +=================+============================================+=======================================================================================================+ | figure | matplotlib.pyplot.figure | Create a new figure object | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | clf | figure.clf | clear figure; shouldn't be needed in Python since each figure will be a unique object | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | subplot | figure.subplots or figure.add_subplot | 1st creates a set of subplots in the figure, 2nd creates one subplot and adds it to the figure | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | plot | figure.plot or axes.plot | Add lineplot to current figure | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | title | object.title | Title of plot; better to define on object creation if possible | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | xlabel | axes.xlabel | Label for the x-axis of plot | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | ylabel | axes.ylabel | Label for the y-axis of plot | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | imagesc | pyplot.imshow or pyplot.matshow | Scale image data to full range of colormap and display | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | axis | axes.axis | Axis properties | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | surf | axes3d.plot_surface or axes3d.plot_trisurf | Plot a 3d surface, need to uses mpl_toolkits.mplot3d and Axes3d; which you use depends on data format | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | shading | | Set during plot creation as argument | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | view | axes3d.view_init | Change the viewing angle for a 3d plot | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | colormap | plot.colormap | Set the colormap; better to do so at plot creation if possible | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+ | colorbar | figure.add_colorbar(axes) | Add colorbar to selected axes | +-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+