MATLAB R2012b 综合教程
MATLAB 简介
MATLAB(Matrix Laboratory,矩阵实验室)是一种高性能的第四代编程语言和交互式环境,它主要用于:

- 数值计算:强大的矩阵运算能力是其核心。
- 数据可视化:可以轻松绘制各种2D和3D图形。
- 编程与算法开发:通过脚本和函数实现复杂的逻辑。
- 仿真与建模:特别是与Simulink结合,进行动态系统仿真。
- 数据分析与导入导出:处理来自文件、数据库等的数据。
R2012b 的特点:
- 桌面布局:经典的桌面布局,包含命令窗口、当前文件夹、工作区等。
- 图形用户界面:菜单和工具栏布局与新版有差异,但功能类似。
- 函数库:核心函数库(如矩阵运算、绘图、信号处理等)与新版高度兼容。
MATLAB 工作环境
启动 MATLAB R2012b 后,你会看到以下几个主要窗口:
-
Command Window (命令窗口)
- 作用:这是与MATLAB交互最直接的地方,你可以在这里输入单行命令并立即看到结果。
- 示例:
>> 2 + 2 ans = 4 >> a = 10 a = 10
-
Current Folder (当前文件夹)
(图片来源网络,侵删)- 作用:显示当前MATLAB正在操作的文件夹,你创建的脚本(
.m文件)、数据文件等都保存在这里,双击文件名可以打开它。
- 作用:显示当前MATLAB正在操作的文件夹,你创建的脚本(
-
Workspace (工作区)
- 作用:显示当前内存中所有变量的名称、大小、类型和值,你在命令窗口或脚本中创建的所有变量都会出现在这里,你可以右键点击变量进行绘图、查看或删除。
-
Command History (命令历史记录)
- 作用:记录你在命令窗口中输入过的所有命令,你可以双击之前的命令来重新执行,或者将其拖拽到脚本中。
基础语法与操作
变量与赋值
- 变量名区分大小写(
A和a是不同的变量)。 - 变量名必须以字母开头,后跟字母、数字或下划线。
- 无需声明变量类型,MATLAB会自动根据赋值确定。
>> x = 5; % 分号“;”表示不显示该行结果
>> y = x^2 + 3; % ^ 表示乘方
>> z = 'Hello World'; % 字符串需要用单引号
>> disp(y) % 使用disp函数显示变量值
28
矩阵与数组
MATLAB的核心是矩阵,创建矩阵最简单的方式是用方括号 []。
>> A = [1, 2, 3; 4, 5, 6; 7, 8, 9] % 分号“;”表示换行,逗号“,”或空格表示分隔列
A =
1 2 3
4 5 6
7 8 9
>> B = [1 2 3; 4 5 6] % 也可以用空格分隔列
B =
1 2 3
4 5 6
% 创建特殊矩阵
>> C = zeros(2, 3) % 创建一个2x3的全零矩阵
C =
0 0 0
0 0 0
>> D = ones(3, 1) % 创建一个3x1的全1列向量
D =
1
1
1
>> E = eye(4) % 创建一个4x4的单位矩阵
E =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
矩阵索引
- 使用
行号, 列号来访问元素。 - 索引从 1 开始(与C/Java等不同)。
>> A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
>> A(2, 3) % 获取第2行,第3列的元素
ans =
6
>> A(1, :) % 获取第1行的所有元素
ans =
1 2 3
>> A(:, 2) % 获取第2列的所有元素
ans =
2
5
8
运算符
- 算术运算符: (加), (减), (矩阵乘法), (元素乘法), (矩阵右除), (元素右除),
^(矩阵乘方),.^(元素乘方)。 - 关系运算符: (等于), (不等于),
>(大于),<(小于),>=(大于等于),<=(小于等于)。 - 逻辑运算符:
&(与), (或), (非)。
特别注意矩阵乘法和元素乘法的区别:

>> A = [1, 2; 3, 4];
>> B = [5, 6; 7, 8];
>> A * B % 矩阵乘法
ans =
19 22
43 50
>> A .* B % 元素乘法 (对应元素相乘)
ans =
5 12
21 32
脚本与函数
脚本文件 (Script File, .m)
当你需要执行一系列命令时,应该使用脚本文件。
- 创建:在MATLAB界面上,点击
File -> New -> Script(在R2012b中可能是New -> M-File)。 - 保存:将文件保存在你的
Current Folder中,例如命名为my_script.m。 - 运行:在编辑器中点击 "Run" 按钮,或在命令窗口输入
my_script。
示例 my_script.m:
% 这是一个计算并绘制正弦波的脚本
clear; % 清除工作区变量
clc; % 清空命令窗口
close all; % 关闭所有图形窗口
% 定义参数
x = 0:0.1:2*pi; % 创建一个从0到2π的向量,步长为0.1
y = sin(x); % 计算x对应的正弦值
% 绘制图形
plot(x, y);'正弦波');
xlabel('x');
ylabel('sin(x)');
grid on; % 显示网格
函数文件 (Function File, .m)
函数是为了重用代码而创建的,它接收输入参数并返回输出结果。
- 创建:同样通过
File -> New -> Script创建,但内容格式不同。 - 格式:
function [输出变量1, 输出变量2] = 函数名(输入变量1, 输入变量2) - 文件名:必须与函数名相同。
示例 calculate_mean.m:
function [mean_value, std_value] = calculate_mean(data) % 计算输入数据的平均值和标准差 % 输入: % data - 一个向量或矩阵 % 输出: % mean_value - 平均值 % std_value - 标准差 mean_value = mean(data); std_value = std(data); end
如何调用函数:
>> my_data = [1, 2, 3, 4, 5];
>> avg, st = calculate_mean(my_data) % 注意:R2012b不支持这种“多输出赋值语法”,需要写成如下形式
>> [avg, st] = calculate_mean(my_data) % 正确的调用方式
avg =
3
st =
1.5811
(注:在较新的MATLAB版本中,可以省略方括号直接写 avg, st = ...,但在R2012b中必须使用 [avg, st] = ... 的形式。)
数据可视化
绘图是MATLAB的强项,最常用的函数是 plot。
基本绘图
x = 0:0.01:10;
y1 = sin(x);
y2 = cos(x);
% 绘制第一条曲线
plot(x, y1, 'r-', 'LineWidth', 2); % 'r-' 表示红色实线,LineWidth设置线宽
hold on; % 保持当前图形,以便在其上叠加新图形
% 绘制第二条曲线
plot(x, y2, 'b--o'); % 'b--o' 表示蓝色虚线,数据点用圆圈标记
% 添加图形元素'正弦和余弦函数');
xlabel('x轴');
ylabel('y轴');
legend('sin(x)', 'cos(x)');
grid on;
hold off; % 关闭保持模式
其他常用图形
- 散点图:
scatter(rand(100,1), rand(100,1), 'filled');
- 柱状图:
data = [10, 25, 18, 30]; bar(data);
- 直方图:
data = randn(1000,1); % 生成1000个标准正态分布随机数 hist(data, 30); % 将数据分成30个bin
帮助系统
学会使用帮助是精通MATLAB的关键。
-
help命令: 在命令窗口输入help加上函数名。>> help plot
这会显示
plot函数的详细用法、语法和示例。 -
doc命令: 在命令窗口输入doc加上函数名。>> doc plot
这会在一个独立的帮助窗口中打开该函数的详细文档,通常包含更丰富的图文示例,非常直观。
-
帮助窗口: 点击MATLAB主界面的问号图标 ,可以打开完整的帮助文档。
实践小项目:数据分析
目标:读取一个包含学生成绩的文本文件,计算平均分,并绘制分数分布直方图。
步骤 1: 创建数据文件
在 Current Folder 中创建一个名为 scores.txt 的文本文件,内容如下:
85
92
78
65
88
91
73
95
82
步骤 2: 编写脚本 analyze_scores.m
% --- 脚本: analyze_scores.m ---
% 功能: 读取学生成绩,计算平均值并绘制直方图
clear; clc; close all;
% 1. 从文本文件读取数据
% R2012b中,load函数可以读取纯数字文本文件
% 假设scores.txt只包含数字,每行一个
try
scores = load('scores.txt');
catch ME
% 如果文件不存在,给出错误提示
disp(['错误: 无法找到文件 scores.txt. 错误信息: ' ME.message]);
return;
end
% 2. 计算统计数据
average_score = mean(scores);
max_score = max(scores);
min_score = min(scores);
% 3. 在命令窗口显示结果
fprintf('成绩分析结果:\n');
fprintf('----------------\n');
fprintf('平均分: %.2f\n', average_score);
fprintf('最高分: %d\n', max_score);
fprintf('最低分: %d\n', min_score);
% 4. 绘制分数分布直方图
figure; % 创建一个新的图形窗口
hist(scores, 5); % 将分数分成5个区间绘制直方图'学生成绩分布直方图');
xlabel('分数区间');
ylabel('学生人数');
grid on;
% 在图上添加平均分线
hold on;
plot([average_score, average_score], ylim, 'r-', 'LineWidth', 2);
legend('分数分布', '平均分');
hold off;
步骤 3: 运行脚本
- 确保
scores.txt和analyze_scores.m在同一个文件夹下。 - 在MATLAB中,将该文件夹设置为
Current Folder。 - 在编辑器中点击 "Run" 按钮。
预期输出:
- 命令窗口会显示计算出的平均分、最高分和最低分。
- 会弹出一个图形窗口,显示成绩分布的直方图,并有一条红色的平均分参考线。
总结与资源
- 核心思想:MATLAB的一切都是围绕“矩阵”展开的,尽量使用向量化操作(如
A .* B)而不是循环(for),这样代码更简洁,运行速度也更快。 - 调试:在脚本中使用
disp()或fprintf()输出中间变量值是调试的好方法,也可以使用断点(在代码行号旁右键设置)进行交互式调试。 - 资源:
- 官方文档:虽然老版本文档已下线,但通过
help和doc命令访问的是本地安装的文档,内容依然有效。 - 在线资源:MathWorks官网有大量针对新版的教程,但其基础概念同样适用于R2012b。
- 社区:MATLAB Central 是一个很好的问答和资源分享平台。
- 官方文档:虽然老版本文档已下线,但通过
希望这份教程能帮助你顺利入门 MATLAB R2012b!多练习,多尝试,你会发现它是一个非常强大的工具。
