MATLAB 基础及应用教程
第一部分:MATLAB 简介
什么是 MATLAB?

MATLAB 的名字来源于 "MATrix LABoratory"(矩阵实验室),它是由美国 MathWorks 公司开发的一款商业数学软件,主要用于:
- 数值计算
- 可视化
- 编程
- 算法开发
MATLAB 的核心数据结构是矩阵,这使得它特别适合处理线性代数问题、数据分析、信号处理等任务,它拥有一个名为工具箱 的附加组件,针对特定领域(如信号处理、图像处理、控制系统、深度学习等)提供了大量预编写的函数,极大地扩展了其功能。
为什么选择 MATLAB?
- 语法简单: 接近数学表达式的语言,易于学习和使用。
- 强大的矩阵运算能力: 无需编写复杂的循环,一行代码即可完成复杂的矩阵运算。
- 丰富的工具箱: 覆盖了几乎所有工程和科学计算领域。
- 出色的可视化功能: 可以轻松绘制各种高质量的 2D 和 3D 图形。
- 庞大的社区和资源: 有大量的文档、教程、示例和用户支持。
第二部分:MATLAB 基础入门
MATLAB 工作环境

当你启动 MATLAB 时,会看到几个主要的窗口:
- 命令行窗口: 这是与 MATLAB 交互的主要地方,你可以在这里输入命令并立即看到结果。
- 当前文件夹: 显示 MATLAB 当前正在操作的文件夹中的文件,你可以在这里创建、打开、保存脚本和文件。
- 工作区: 显示当前内存中所有变量的名称、大小和值,当你创建变量时,它们会出现在这里。
- 命令历史记录: 记录了你在命令行窗口中输入过的所有命令。
基本操作
clc: 清除命令行窗口。clear: 清除工作区中的所有变量。who: 列出工作区中的变量名。whos: 列出工作区中的变量名及其详细信息(大小、类型等)。help 函数名: 获取某个函数的帮助信息。doc 函数名: 在帮助文档中打开某个函数的详细页面。
变量与赋值
MATLAB 中的变量无需预先声明类型,使用 进行赋值。
% 创建一个变量 a 并赋值为 5 a = 5; % 创建一个字符串变量 name = '张三'; % 显示变量的值 disp(a); % 在命令行直接输入变量名也会显示其值 name
基本数据类型:矩阵
这是 MATLAB 的核心。
-
创建向量(一维矩阵):
% 行向量 row_vector = [1, 2, 3, 4, 5]; % 列向量 (使用分号或回车换行) col_vector = [1; 2; 3; 4; 5]; % 或者 % col_vector = [1 % 2 % 3 % 4 % 5];
-
创建矩阵(二维矩阵):
% 使用空格或逗号分隔列,使用分号分隔行 A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
-
特殊矩阵生成:
% 创建一个 3x4 的全零矩阵 zeros_matrix = zeros(3, 4); % 创建一个 2x2 的全一矩阵 ones_matrix = ones(2, 2); % 创建一个 3x3 的单位矩阵 identity_matrix = eye(3); % 创建一个 2x5 的随机矩阵 (0到1之间均匀分布) random_matrix = rand(2, 5); % 创建一个 2x5 的随机矩阵 (均值为0,方差为1的正态分布) .randn_matrix = randn(2, 5);
矩阵索引
访问矩阵中的元素使用圆括号 。
A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; % 访问第 2 行,第 3 列的元素 element = A(2, 3); % 结果是 6 % 访问第 1 行的所有元素 first_row = A(1, :); % 冒号 : 表示所有列 % 访问第 2 列的所有元素 second_col = A(:, 2); % 冒号 : 表示所有行 % 修改元素 A(1, 1) = 100;
基本运算
-
算术运算符:
- , , (矩阵乘法), (元素乘法), (矩阵除法), (元素除法),
^(矩阵幂),.^(元素幂)A = [1, 2; 3, 4]; B = [5, 6; 7, 8];
% 矩阵乘法 C = A * B;
% 元素乘法 (对应元素相乘) D = A .* B;
- , , (矩阵乘法), (元素乘法), (矩阵除法), (元素除法),
-
关系运算符:
- , ,
>,<,>=,<=,返回一个逻辑矩阵 (0 或 1)。A = [1, 5; 3, 2]; B = A > 2; % B 将是 [0, 1; 1, 0]
- , ,
-
逻辑运算符:
&(与), (或), (非)。A = [1, 0; 0, 1]; B = [0, 1; 1, 0]; C = A & B; % C 将是 [0, 0; 0, 0]
常用内置函数
sum(A): 对矩阵 A 的列求和。mean(A): 计算矩阵 A 的列的平均值。max(A): 找到矩阵 A 每列的最大值。min(A): 找到矩阵 A 每列的最小值。size(A): 返回矩阵 A 的维度 [行数, 列数]。length(A): 返回矩阵 A 中最长维度的长度。reshape(A, m, n): 将矩阵 A 重塑为 m x n 的新矩阵。transpose(A)或A': 矩阵的转置。
第三部分:MATLAB 脚本与控制流
脚本文件
为了避免在命令行窗口重复输入代码,我们使用脚本文件(.m 文件)。
- 点击 "新建脚本" 按钮。
- 在编辑器中编写代码。
- 点击 "保存" 并命名为
my_script.m。 - 点击 "运行" 按钮或在命令行窗口输入
my_script来执行。
控制流
-
if-elseif-else语句:score = 85; if score >= 90 disp('优秀'); elseif score >= 80 disp('良好'); elseif score >= 60 disp('及格'); else disp('不及格'); end -
for循环:% 计算 1 到 10 的和 sum_total = 0; for i = 1:10 sum_total = sum_total + i; end disp(['总和为: ', num2str(sum_total)]); -
while循环:% 找到小于 100 的最大的 2 的幂 power = 1; while power * 2 < 100 power = power * 2; end disp(['结果是: ', num2str(power)]);
第四部分:数据可视化
基本绘图函数
-
plot函数: 绘制 2D 线图。% 创建数据 x = 0:0.1:2*pi; % 从 0 到 2π,步长为 0.1 y = sin(x); % 绘制图形 plot(x, y); % 添加标题和坐标轴标签'正弦函数'); xlabel('x 轴'); ylabel('y 轴'); grid on; % 显示网格 -
subplot函数: 在一个窗口中创建多个子图。x = 0:0.1:2*pi; subplot(2, 1, 1); % 2行1列,在第1个位置绘图 plot(x, sin(x));'正弦函数'); subplot(2, 1, 2); % 2行1列,在第2个位置绘图 plot(x, cos(x));'余弦函数');
-
其他常用图形:
scatter(x, y): 散点图。bar(y): 条形图。histogram(y): 直方图。pie(y): 饼图。
第五部分:MATLAB 实际应用领域
MATLAB 的强大之处在于其工具箱,以下是几个主要应用领域:
数学与数值分析
-
求解线性方程组:
A\bA = [2, 1; 1, 3]; b = [4; 7]; x = A \ b; % 等价于 A⁻¹ * b
-
多项式拟合:
polyfit和polyvalx = [1, 2, 3, 4, 5]; y = [2.1, 3.9, 6.2, 7.8, 10.1]; % 用 2 次多项式拟合数据 p = polyfit(x, y, 2); % 返回多项式系数 % 计算拟合后的 y 值 y_fit = polyval(p, x); % 绘制原始数据和拟合曲线 plot(x, y, 'o', x, y_fit, '-'); legend('原始数据', '拟合曲线'); -
数值积分:
integral -
求解微分方程:
ode45
信号处理
-
信号生成与滤波: 使用 Signal Processing Toolbox。
% 生成一个含噪声的正弦信号 t = 0:0.001:1; f = 50; % 50 Hz clean_signal = sin(2*pi*f*t); noise = 0.2 * randn(size(t)); noisy_signal = clean_signal + noise; % 设计一个低通滤波器 Wp = 60/(1/2/0.001); % 通带截止频率 Ws = 80/(1/2/0.001); % 阻带截止频率 [b, a] = butter(4, [Wp, Ws]/(1/2/0.001), 'stop'); % 应用滤波器 filtered_signal = filtfilt(b, a, noisy_signal); % 绘制结果 subplot(3,1,1); plot(t, clean_signal); title('原始信号'); subplot(3,1,2); plot(t, noisy_signal); title('含噪声信号'); subplot(3,1,3); plot(t, filtered_signal); title('滤波后信号');
图像处理
-
读取、显示、处理图像: 使用 Image Processing Toolbox。
% 读取一张灰度图像 I = imread('cameraman.tif'); % 显示图像 figure; imshow(I);'原始图像'); % 对图像进行高斯滤波去噪 J = imgaussfilt(I, 2); % 显示处理后的图像 figure; imshow(J);'滤波后图像');
控制系统
-
传递函数分析与系统响应: 使用 Control System Toolbox。
% 创建一个传递函数 G(s) = 1 / (s^2 + 2s + 1) num = [1]; den = [1, 2, 1]; G = tf(num, den); % 绘制系统的阶跃响应 step(G);'系统阶跃响应');
第六部分:学习资源与建议
官方资源
- MATLAB 官方文档: 最权威、最全面的资源,使用
doc命令或访问 MathWorks 官网。 - MATLAB Onramp: MathWorks 官方提供的免费互动入门课程,强烈推荐给所有初学者。
书籍
- 《MATLAB从入门到精通》:国内经典的入门书籍,内容全面。
- 《MATLAB编程与工程应用》:更侧重于工程实践。
- 《MATLAB Guide》 (Desmond Higham & Nicholas Higham):国外的经典之作,适合深入学习。
在线教程与社区
- MathWorks 官方示例: 在文档中可以找到海量的代码示例。
- GitHub: 搜索 "MATLAB examples",可以找到许多开源项目和高质量代码。
- Bilibili / YouTube: 有大量免费的视频教程,适合喜欢看视频学习的用户。
学习建议:
- 动手实践: MATLAB 是一门实践性很强的语言,不要只看书,一定要把代码敲出来运行,修改参数,观察结果。
- 从模仿开始: 找一些简单的示例代码,理解它,然后尝试修改它,实现自己的功能。
- 学会使用
help和doc: 这是 MATLAB 程序员最重要的两个工具,遇到任何函数,首先想到的就是查看官方文档。 - 分阶段学习: 先掌握基础语法和矩阵操作,再学习脚本和流程控制,最后根据自己的兴趣深入学习特定工具箱。
希望这份教程能帮助你顺利开启 MATLAB 的学习之旅!祝你学习愉快!
