1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
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 |
+-----------------+--------------------------------------------+-------------------------------------------------------------------------------------------------------+
|