This series serves as a learning note for a quick start with MATLAB, aiming to document the learning process for future reference. I am honored if it can help you. Practicing the Feynman learning method, I openly share and welcome communication and corrections!
๐ Complete Resource Map
| Title | Core Skills | Application Scenarios |
|---|---|---|
| Quick Start to MATLAB 01 | Environment Configuration | Genuine Usage Plan |
| Quick Start to MATLAB 02 | Learning Path | Official Documentation Guide |
| Quick Start to MATLAB 03 | Basic Operations | Matrix/Visualization |
| Quick Start to MATLAB 04 | Advanced Operations | Functions/Files/Debbuging |
| Quick Start to MATLAB 05 | Data Structures | Heterogeneous Data Processing |
| Quick Start to MATLAB 06 | Text Processing | Log Analysis/NLP |
| Quick Start to MATLAB 07 | Advanced Visualization | Figures for Papers/Reports |
| Quick Start to MATLAB 08 | Performance Optimization | Big Data Processing |
The King of Cross-Disciplinary: When MATLAB and Python fall in love in code…
The team uses Python for ML (Machine Learning), while you use MATLAB for simulation?Scenario: A colleague throws a PyTorch model at you, and you ponder over the MATLAB simulation code…The Truth: MATLAB is the King of Languagesโ holding Python in one hand, C++ in the other, and even dating Web APIs! ๐
1. Python: The Best Partner
1.1 Bidirectional Calling
% Verify if Python is installed
!python --version % Run in MATLAB command line โ Like checking the other party's credentials
% Check current Python environment configuration
pyenv() % โ Confirm if "values" align
% Call Python function
py_list = py.list({'MATLAB','Python'});
len = py.len(py_list) % โ 2 (the love child is born!)
% Convert data type
matlab_cell = cell(py_list) % โ {'MATLAB','Python'}
# Call MATLAB from Python
# Python code
import matlab.engine
eng = matlab.engine.start_matlab()
result = eng.magic(4) # โ 2.0 (the decimal of love)
Tutorial on calling MATLAB from Python:
- Input
<span>matlabroot</span>in the MATLAB command window to find the installation path. - Locate the
<span>extern/engines/python</span>directory under that path. - In that directory, right-click and select
<span>Open in Terminal</span>to enter the dark terminal interface, and input<span>python setup.py install</span>to install the MATLAB engine. - Run the above code to call MATLAB functions in Python.
๐ค A Twist: The Programmer’s Blind Date
Calling Python from MATLAB is like a tech geek’s blind dateโ the first date (pyenv) confirms if the development environment matches, the second date (py.list) starts exchanging data types… and finally, cell(py_list) successfully gets the marriage certificate! ๐
1.2 Using Python Libraries
% Ignore duplicate OpenMP library loading warnings to run the program smoothly
setenv('KMP_DUPLICATE_LIB_OK', 'TRUE')
% Import matplotlib library
plt = py.importlib.import_module('matplotlib.pyplot');
np = py.importlib.import_module('numpy');
% Create data
x = np.linspace(0, 2*np.pi, py.int(100));
y = np.sin(x);
% Create a beautiful figure
fig = plt.figure(figsize=py.tuple({8, 6})); % Set figure size
ax = fig.add_subplot(py.int(111)); % Create subplot
% Plot the curve
ax.plot(x, y, 'b-', linewidth=2.5, label='sin(x)');
% Set axis limits
ax.set_xlim([0, 2*np.pi]);
ax.set_ylim([-1.2, 1.2]);
% Show figure
plt.show();
fig.savefig('python_sin.png');

Note: However, it is recommended to use pure MATLAB plotting, as it is more stable and does not worry about environment compatibility issues.
2. C/C++: The Performance Savior
2.1 MEX Mechanism: The Simultaneous Interpreter of Code

Life Analogy: MEX is like a simultaneous interpreter at an international conferenceโMATLAB speaks Chinese: “Calculate matrix multiplication” MEX translates to English: “compute matrix multiplication” C++ hears the result and replies instantly, and MEX translates back to Chinese for reporting! ๐ฃ๏ธ
2.2 Practical Example: Accelerating Matrix Operations (with Performance Comparison)
// fast_multiply.c - 10 times faster than MATLAB!
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
double *A = mxGetPr(prhs[0]); // Get matrix A
double *B = mxGetPr(prhs[1]); // Get matrix B
int m = mxGetM(prhs[0]); // Number of rows
int n = mxGetN(prhs[1]); // Number of columns
int p = mxGetN(prhs[0]); // Inner dimension
plhs[0] = mxCreateDoubleMatrix(m, n, mxREAL);
double *C = mxGetPr(plhs[0]);
// Optimized brute-force matrix multiplication
for (int i=0; i<m; i++)
for (int k=0; k<p; k++)
for (int j=0; j<n; j++)
C[i + j*m] += A[i + k*m] * B[k + j*p];
}
% Compile and run
mex fast_multiply.c
% Performance comparison
A = rand(1000); B = rand(1000);
tic; C_mex = fast_multiply(A,B); t_mex = toc;
tic; C_matlab = A*B; t_matlab = toc;
printf('MEX speedup: %.1f times!
', t_matlab/t_mex);
Measured Results: For 1000×1000 matrix multiplication: MATLAB took 0.85s โ MEX only 0.08s! โก
A MEX compiler needs to be installed, download from <span>https://ww2.mathworks.cn/matlabcentral/fileexchange/52848-matlab-support-for-mingw-w64-c-c-fortran-compiler/ </span>
3. File Interoperability: Full Format Coverage
| Format | Read Function | Write Function |
|---|---|---|
| Excel | <span>readtable</span> |
<span>writetable</span> |
| CSV | <span>readmatrix</span> |
<span>writematrix</span> |
| HDF5 | <span>h5read</span> |
<span>h5write</span> |
| Image | <span>imread</span> |
<span>imwrite</span> |
| Audio | <span>audioread</span> |
<span>audiowrite</span> |
MATLAB is like a Swiss Army knife for dataโable to handle any format!
๐ Ultimate Principle: Interface Selection Guide

MATLAB can also directly call Web APIs using <span>webread</span> and <span>webwrite</span> functions to obtain JSON/XML data, and even use MATLAB as a server to handle HTTP requests. Those interested can refer to the official website.<span>https://ww2.mathworks.cn/help/matlab/internet-file-access.html?searchHighlight=web+API&s_tid=srchtitle_support_results_3_web+API</span>.
This article only represents the author’s personal views and is not related to any organization. The content is for learning and communication purposes only. If there is any infringement, please contact for removal.