MATLAB 实例教程:从入门到实践
MATLAB (Matrix Laboratory) 是一款功能强大的商业数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算,其核心特点是使用矩阵作为基本运算单位,这使得科学计算变得异常简洁高效。
第一部分:MATLAB 基础入门
1 MATLAB 工作环境
启动 MATLAB 后,你会看到几个主要窗口:
- 命令行窗口:这是你与 MATLAB 交互的主要地方,在这里输入命令,并查看输出结果。
- 当前文件夹:显示当前 MATLAB 正在操作的文件夹,你可以在这里看到脚本、函数和数据文件。
- 工作区:显示当前内存中所有变量的名称、大小和值,你可以在这里创建、修改和删除变量。
- 编辑器:用于编写和调试脚本(.m 文件)和函数。
2 基本运算与变量
MATLAB 的语法非常直观,类似于数学表达式。
实例 1.1:基本算术运算
% 在命令行窗口中直接输入以下内容 % 加法 5 + 3 % 减法 10 - 4 % 乘法 6 * 7 % 除法 15 / 3 % 幂运算 2 ^ 10
实例 1.2:创建和使用变量
% 创建变量并赋值 a = 10; b = 20; c = 'Hello, MATLAB'; % 在工作区中可以看到变量 a, b, c % 使用变量进行计算 sum_result = a + b; disp(sum_result); % 使用 disp 函数显示结果 % 变量也可以存储矩阵(数组) x = [1, 2, 3, 4, 5]; y = [2; 4; 6; 8; 10]; % 查看变量的详细信息 whos a x
符号:用于表示注释,MATLAB 会忽略它,写注释是编程的好习惯。
3 矩阵与数组操作
这是 MATLAB 的核心。
实例 1.3:创建矩阵
% 创建一个 2x3 的矩阵(2行3列) A = [1, 2, 3; 4, 5, 6] % 创建一个 3x3 的单位矩阵 I = eye(3) % 创建一个全为 1 的 2x4 矩阵 ones_matrix = ones(2, 4) % 创建一个全为 0 的 3x2 矩阵 zeros_matrix = zeros(3, 2) % 创建一个线性等间距的向量 % 语法: linspace(起始值, 结束值, 元素个数) v1 = linspace(0, 10, 5) % 生成 [0, 2.5, 5, 7.5, 10] % 创建一个等间隔的向量 % 语法: 起始值:步长:结束值 v2 = 1:2:9 % 生成 [1, 3, 5, 7, 9]
实例 1.4:访问矩阵元素
A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; % 访问单个元素 % 语法: 矩阵名(行号, 列号) element = A(2, 3) % 获取第2行第3列的元素,结果为 6 % 访问整行或整列 % 冒号 : 表示所有 row_2 = A(2, :) % 获取第2行的所有元素,结果为 [4, 5, 6] col_1 = A(:, 1) % 获取第1列的所有元素,结果为 [1; 4; 7] % 使用逻辑索引(非常重要!) % 找出 A 中所有大于 5 的元素 large_elements = A(A > 5)
4 基本绘图
MATLAB 拥有出色的绘图功能。
实例 1.5:绘制正弦函数
% 1. 准备数据
x = linspace(0, 2*pi, 100); % 从 0 到 2π 生成 100 个点
y = sin(x); % 计算 x 对应的正弦值
% 2. 创建图形窗口
figure;
% 3. 绘制曲线
plot(x, y);
% 4. 添加标题和坐标轴标签'正弦函数曲线');
xlabel('x 轴 (弧度)');
ylabel('y 轴 (sin(x))');
grid on; % 显示网格
运行这段代码,会弹出一个包含正弦曲线的窗口。
第二部分:进阶主题与实例
1 脚本文件 (.m 文件)
当命令变得复杂时,你应该将它们保存在脚本文件中,以便重复使用。
实例 2.1:创建一个绘制多条曲线的脚本
- 在 MATLAB 编辑器中,点击
新建脚本。 - 将以下代码粘贴进去:
% 文件名: plot_multiple_curves.m
% 清理工作区和命令窗口
clear;
clc;
% 准备数据
x = linspace(0, 2*pi, 200);
% 计算 y1 = sin(x) 和 y2 = cos(x)
y1 = sin(x);
y2 = cos(x);
% 创建新的图形窗口
figure;
% 在同一个坐标轴上绘制两条曲线
plot(x, y1, 'r-', x, y2, 'b--');
% 添加图例
legend('sin(x)', 'cos(x)');
和标签'正弦和余弦函数');
xlabel('x 轴');
ylabel('y 轴');
grid on;
axis([0 2*pi -1.2 1.2]); % 设置坐标轴范围
- 点击
保存,将文件命名为plot_multiple_curves.m。 - 在命令行窗口输入
plot_multiple_curves并按回车,运行脚本。
2 条件语句与循环
实例 2.2:使用 if-else 和 for 循环
% --- 使用 for 循环 ---
% 计算 1 到 10 的累加和
sum_result = 0;
for i = 1:10
sum_result = sum_result + i;
end
disp(['1到10的和是: ', num2str(sum_result)]);
% --- 使用 if-else 语句 ---
% 判断一个数是正数、负数还是零
num = -5;
if num > 0
disp('这个数是正数。');
elseif num < 0
disp('这个数是负数。');
else
disp('这个数是零。');
end
3 函数文件
函数是封装可重用代码的强大工具。
实例 2.3:创建一个计算平均值的函数
- 在编辑器中,点击
新建->函数。 - 将代码修改如下:
% 文件名: my_average.m
function avg = my_average(numbers)
% my_average 计算一个向量的平均值
% 输入:
% numbers - 一个数值向量
% 输出:
% avg - 该向量的平均值
% 检查输入是否为空
if isempty(numbers)
error('输入向量不能为空!');
end
% 计算平均值
avg = sum(numbers) / length(numbers);
end
- 保存为
my_average.m。 - 在命令行窗口中调用这个函数:
% 创建一个测试向量 test_scores = [88, 92, 76, 99, 85]; % 调用函数 average_score = my_average(test_scores); % 显示结果 disp(['平均分是: ', num2str(average_score)]);
第三部分:综合实例:数据分析与可视化
这是一个更完整的实例,展示如何读取数据、处理数据并生成可视化报告。
场景:我们有一个名为 sales_data.csv 的文件,包含某公司过去一年的月销售额,我们想读取数据,计算月平均销售额,并绘制趋势图。
准备数据文件
创建一个名为 sales_data.csv 的文本文件,内容如下(注意逗号分隔):
Month,Sales January,12000 February,15000 March,18000 April,16000 May,22000 June,25000 July,28000 August,26000 September,24000 October,30000 November,32000 December,35000
将这个文件保存在你的 MATLAB 当前文件夹 中。
编写主脚本
创建一个新的脚本文件,analyze_sales.m,并输入以下代码:
% --- 脚本: analyze_sales.m ---
% 功能: 分析销售数据并生成可视化报告
% 清理环境
clear;
clc;
close all; % 关闭所有已打开的图形窗口
% --- 1. 数据读取 ---
% 使用 readtable 函数读取 CSV 文件
% 假设 sales_data.csv 在当前文件夹中
try
sales_table = readtable('sales_data.csv');
disp('数据读取成功!');
catch ME
disp(['错误: 无法读取文件。', ME.message]);
return; % 如果读取失败,则终止脚本
end
% --- 2. 数据处理 ---
% 提取销售额数据到向量中
sales_vector = sales_table.Sales;
% 计算总销售额和平均销售额
total_sales = sum(sales_vector);
average_sales = mean(sales_vector);
% 计算每个月相对于平均销售额的百分比
sales_percentage = (sales_vector / average_sales) * 100;
% --- 3. 数据可视化 ---
% 创建一个新的图形窗口,准备绘制两个子图
figure('Name', '年度销售分析报告', 'NumberTitle', 'off');
% --- 子图 1: 月度销售额趋势 ---
subplot(2, 1, 1); % 创建一个 2行1列的图,并激活第1个
plot(sales_table.Month, sales_vector, '-o', 'LineWidth', 2, 'MarkerSize', 8);'月度销售额趋势图', 'FontSize', 14);
xlabel('月份');
ylabel('销售额 (元)');
grid on;
% 自动调整 x 轴标签,使其不重叠
xticks(1:12);
xticklabels(sales_table.Month);
set(gca, 'XTickLabelRotation', 45); % 旋转45度
% --- 子图 2: 销售额占比 ---
subplot(2, 1, 2); % 激活第2个子图
bar(sales_percentage);'各月销售额占年平均值的百分比', 'FontSize', 14);
xlabel('月份');
ylabel('百分比 (%)');
grid on;
% 同样调整 x 轴标签
xticks(1:12);
xticklabels(sales_table.Month);
set(gca, 'XTickLabelRotation', 45);
% --- 4. 在命令行输出关键结果 ---
disp('-----------------------------------');
disp('年度销售分析报告');
disp(['总销售额: ', num2str(total_sales), ' 元']);
disp(['平均月销售额: ', num2str(average_sales), ' 元']);
disp('-----------------------------------');
运行脚本
在 MATLAB 的当前文件夹中确保 sales_data.csv 文件存在,然后在命令行窗口输入 analyze_sales 并运行。
你会看到以下输出和图形:
命令行输出:
数据读取成功!
-----------------------------------
年度销售分析报告
总销售额: 263000 元
平均月销售额: 21916.7 元
-----------------------------------
生成的图形:
第四部分:学习资源与建议
- 官方文档 (MATLAB Help):MATLAB 自带的帮助文档是最好的学习资源,按
F1键或在命令行输入doc即可打开,它包含所有函数的详细说明、示例和教程。 - MATLAB 官方示例:在主页的“示例”部分,你可以找到大量针对不同应用领域的实例代码。
- 在线课程平台:
- MathWorks 官方课程:MATLAB Onramp,一个免费的交互式入门课程。
- Coursera / edX:许多大学提供基于 MATLAB 的工程和科学计算课程。
- 社区与博客:
- MATLAB Central:包含 File Exchange(代码分享)、Answers(问答社区)和 Blogs(博客)。
- CSDN、知乎等中文社区:有大量中文教程和经验分享。
学习建议:
- 动手实践:不要只看,一定要亲手敲代码,修改参数,看看结果有什么不同。
- 从简单开始:先掌握基本操作,再逐步挑战复杂的项目。
- 学会使用
help和doc:遇到不懂的函数,第一时间查阅官方文档。 - 多看别人的代码:在 File Exchange 或 GitHub 上阅读优秀代码,学习编程技巧和风格。
希望这份详细的教程能帮助你顺利开启 MATLAB 的学习之旅!祝你学习愉快!
