期末备考最忌讳的一件事就是把整本教材从头翻到尾。MATLAB这门课的特点更加明显知识点不深但特别碎考试时间不多但题型相对固定。与其临考前对着几百页课件发呆不如把高频考点、易错细节集中整理出来按模块逐个击破。这份汇总是我在带过几届期末复习后结合考试真题和课堂重点整理出来的备考梳理。不用你从头学一遍只需要拿着它对照自己的薄弱点直接补漏。适合考前一两周突击复习的同学也适合已经过完一轮、准备做易错点自查的读者。下面所有内容我都按考试里的实际出题方式来写该给公式给公式该标注意标注意事项尽量让你看完就能上手。1. 基础语法与矩阵操作考试地基中的地基MATLAB期末考试里开头几道题通常都是送分题但送分不等于一定能拿分。很多人栽在矩阵创建和索引上不是不会而是细节记混了。我把最常考的几种情况拆开讲一遍。1.1 变量、矩阵与向量的创建方式MATLAB里所有数据默认都是矩阵单个数字其实是1×1矩阵这和其他语言差别很大。考试常考的就是如何快速创建需要的矩阵。最基础的是直接输入法用方括号把元素括起来行之间用分号分隔A [1 2 3; 4 5 6; 7 8 9]这样就创建了一个3×3矩阵。注意行内元素用空格或逗号分隔行与行之间用分号分隔这是考试必填的书写格式。另一种高频考点是冒号表达式。冒号是MATLAB里最灵活、也最容易被忽视的运算符x 1:5 % 结果1 2 3 4 5 y 1:2:9 % 结果1 3 5 7 9步长为2 z 10:-2:2 % 结果10 8 6 4 2步长为负考试中经常让你预测这段代码输出的结果这时候要注意的是冒号表达式生成的是行向量而且步长不能为0。如果写成1:0:5结果为空矩阵不会报错但后面用的过程中可能出错。真正容易混淆的是冒号表达式和linspace。很多同学不知道linspace(1, 10, 5)和1:10的区别——前者生成的是等间隔的5个点1、3.25、5.5、7.75、10后者生成的是1到10的所有整数。考试如果出生成从0到1之间均匀分布的10个点正确答案是linspace(0, 1, 10)而不是0:1:9这种写法。创建常见特殊矩阵的三件套也要背熟zeros(2, 3) % 全零矩阵 ones(2, 3) % 全一矩阵 eye(3) % 3阶单位矩阵还有一点值得注意zeros(3)和zeros(3, 3)的效果一样都生成3×3的方阵。但zeros(1, 3)是1行3列的行向量zeros(3, 1)是3行1列的列向量两者维度不同后续参与矩阵运算时结果差异很大。这是考试中常见的提问点。1.2 矩阵索引与修改拿到基础分的关键创建好矩阵之后怎么取里面的元素是期末考必考的内容。我先给一个具体的例子A [10 20 30; 40 50 60; 70 80 90];取第2行第3列的元素写作A(2, 3)结果是60。这是最常见的双下标索引方式。但MATLAB还支持单下标索引也就是按列优先顺序把矩阵拉成一列后取元素位置A(4) % 按列优先数第1个是10第2个是40第3个是70第4个是100不对A只有3列等等这里容易乱。A是3×3矩阵元素按列排列的顺序是10、40、70、20、50、80、30、60、90。所以A(4)对应的是第1列第4个但矩阵只有3行单下标索引超过元素总数就会报错。更合理的例子是对于列向量或行向量v [5 10 15 20]; v(3) % 结果是15考试中常考的是用冒号做索引扩展A(:, 2) % 取所有行的第2列结果是 [20; 50; 80] A(2, :) % 取第2行的所有列结果是 [40 50 60] A(1:2, 2:3) % 取第1到2行、第2到3列的子矩阵 A(end, :) % 取最后一行 A(end-1, :) % 取倒数第二行end关键字在索引里非常好用很多学生刚学时不知道。它表示当前维度下的最后位置例如A(end, end)就是矩阵右下角的元素。矩阵索引的修改也很常考。比如把A的第2行全部替换为0写作A(2, :) 0;。把A的第3列删除写作A(:, 3) [];。删除操作在考试中偶尔出现作用是让矩阵列数减少这在某些题目里会对后续计算产生连锁反应要注意。还有个冷门但值得一提的逻辑索引。比如A(A 50) 0; % 把A中所有大于50的元素替换成0这行代码考试中偶尔会出选择题问结果是怎样的。理解它的关键是A 50生成一个与A同维度的逻辑矩阵值为1的位置对应A中大于50的元素然后把它们赋值为0。这种用法不需要写循环是MATLAB向量化思维的代表平时用到了会非常高效。1.3 矩阵运算与数组运算的区别这是全卷最容易丢分的核心考点没有之一。你需要记住一个铁律MATLAB中默认的*、/、^是矩阵运算而.*、./、.^是数组运算逐元素运算。举个例子a [1 2 3]; b [4 5 6];如果写a * b这是矩阵乘法。但a是1×3b也是1×3内维度不匹配结果直接报错。而如果写a .* b结果是[4 10 18]对应元素相乘这才是大多数情况下我们想要的结果。同理a ^ 2在a不是方阵时会报错矩阵乘法要求维度匹配但a .^ 2就是对每个元素平方得到[1 4 9]。这个知识点几乎每年必考而且经常以以下哪些代码是可以正常运行的这类多选题出现。你只需要记住看到点号就想到对应元素操作看到裸运算符号就想到矩阵整体运算就稳了。还有一个隐藏考点是矩阵的转置。行向量转列向量用a.或者a。但要注意a是共轭转置a.是普通转置。如果矩阵元素都是实数两者结果一样如果含复数a会额外取共轭。期末考试一般不会考复数但选择题里如果出现z [12i, 3-4i]; z和z.的比较那就是在考这个细节。建议直接记结论普通转置用.共轭转置用。格式化输出方面format long和format short会影响命令窗口的显示精度但不改变变量内部存储精度。有同学好奇为什么计算出来的小数只显示4位其实是默认short格式。考试如果问你如何让MATLAB显示更多小数位答案是format long就这么简单。2. 流程控制与函数文件期末考的重头戏这个板块在试卷里分值占比很高而且往往会出读代码写结果和补全代码两类题。难度上来讲比基础题上升一个档次。2.1 分支结构与循环结构MATLAB的分支结构和其他语言类似语法细节稍有不同。if语句的经典写法x 5; if x 0 disp(正数); elseif x 0 disp(负数); else disp(零); end注意elseif是连写的中间没有空格。很多同学初学的时候写成else if这在MATLAB里就是两个关键字嵌套了需要额外补一个end容易出语法错误。考试改写题当中这种细节是高频陷阱。switch分支也常考color red; switch color case red disp(红色); case {blue, green} disp(蓝色或绿色); otherwise disp(未知颜色); end注意case后面可以写一个元胞数组这样就能实现多个值匹配同一分支的效果。考试如果出选择题问你哪些值会执行某段代码就要特别留意这种写法。循环方面for循环是最常用的sum 0; for i 1:10 sum sum i; end这段代码计算1到10的和。每个for配一个end不要漏。while循环用于循环次数不确定的场景n 1; while n 100 n n * 2; end执行次数取决于条件何时不成立考试可能会问最后n等于多少你需要手动推导1→2→4→16不对1→2→4→8→16→32→64→128到128时条件128 100为假退出循环所以最后n128。这种题就是纯考推导能力拿笔一步一步算就行。break和continue的区别也要分清。break直接跳出整个循环continue跳过本次循环的剩余部分、进入下一次迭代。考试经常在这上面设置干扰项。2.2 脚本文件与函数文件自定义m文件的核心期末考试通常会留一道大题专门考函数文件的编写。这种题分值一般在10到15分属于必须拿下的类型。函数文件的标准结构是function [out1, out2] myfun(in1, in2) % 函数体 out1 in1 in2; out2 in1 * in2; end关键点有三个。第一函数文件保存时文件名必须与函数名一致。也就是说上面这段函数必须保存为myfun.m。运行时调用[a, b] myfun(3, 4)顺序对应输出和输入参数。第二函数文件的第一行必须是function开头不能有任何其他内容包括注释也不能放在第一行之前。第三函数可以有多个输入和输出。如果调用时只写myfun(3, 4)而不接收输出结果会被忽略不会自动显示。这是期末考试常见的读代码题陷阱——函数定义了返回值但调用语句没有赋值给变量那么结果不会出现在命令窗口。nargin和nargout是MATLAB内置的变量分别表示函数被调用时实际传入的输入参数个数和请求的输出参数个数。它们常用来实现同一个函数支持不同数量的输入参数function result myArea(r, h) if nargin 1 result pi * r^2; % 只输入半径计算圆面积 else result 2 * pi * r * h; % 输入半径和高计算圆柱侧面积 end这种设计在考试中偶尔作为综合题出现要知道怎么用nargin判断参数个数。全局变量的声明方式在函数内部声明global x然后多个函数之间可以共享这个变量。但考试中基本不会考到全局变量如果出现多半是提醒你局部变量和全局变量的区别知道有这个概念就够了。2.3 匿名函数与函数句柄匿名函数是MATLAB中一个很实用但容易在期末复习中被忽略的考点。它的标准写法f (x) x^2 2*x 1;这里的符号创建了一个函数句柄f可以像普通函数一样使用f(2) % 结果是 9匿名函数最大的优势是可以把函数作为参数传给其他函数。比如后面要讲的数值积分integral就需要传入一个函数句柄result integral((x) x.^2, 0, 1);考试中匿名函数出题通常有两种形式一种是让你写出某个表达式的匿名函数另一种是配合fplot或者fzero使用。比如用fzero求方程根f (x) x^3 - x - 2; root fzero(f, 2); % 在2附近寻找根这种函数句柄作为参数传递的思维方式和直接写表达式有本质区别理解这个逻辑后许多数值计算类的题目都能解了。顺带说一句inline函数在旧版本中可以使用但现在统一推荐匿名函数。如果考试中见你写inline(x^2, x)也不能说错但不如(x) x^2规范。我是建议直接用匿名函数理由很简单现在的版本支持更好代码也更简洁。3. 绘图与数据可视化送分题但别丢分MATLAB的绘图能力是考试中很有辨识度的考点。图形题在整个卷面上占比不小而且只要掌握了核心函数出题形式再变也不慌。3.1 plot的核心用法与图形修饰plot是最基本的绘图函数。常见用法x 0:0.1:2*pi; y sin(x); plot(x, y);这段代码会绘制正弦曲线。但如果后面还有一句plot(x, cos(x));那么第一张图会被第二张覆盖掉。这时候就需要hold on保持当前图形让两个函数同时显示plot(x, sin(x)); hold on; plot(x, cos(x)); hold off;考试中经常出现这种情况让考生画出两条函数曲线的对比图。你要是不写hold on后画的曲线会把之前画的覆盖掉。这两个命令的写法及含义几乎是每年必考的。图形修饰的四个常见函数也要会灵活使用xlabel(x轴标签); ylabel(y轴标签); title(图形标题); legend(sin(x), cos(x)); grid on;线条的样式控制通过第三参数指定plot(x, y, r--o)表示红色、虚线、圆形标记点。各字符的含义最好记一下r红色、g绿色、b蓝色、k黑色--虚线、:点线、-.点划线o圆圈标记、*星号标记、s方块标记。选择题喜欢问g--*的图形样式是什么这属于记忆题考前扫一眼就行。3.2 子图与图形窗口用subplot可以把一个图形窗口分成多个区域。常见写法subplot(2, 2, 1); plot(x, sin(x)); title(sin(x)); subplot(2, 2, 2); plot(x, cos(x)); title(cos(x));这里subplot(2, 2, 1)表示把整个窗口划分为2行2列然后在第1个区域绘图。区域编号规则是按行优先从左到右、从上到下。这个顺序容易混我记的方法是先假设自己在读书从左到右读完第一行再读第二行。考试如果出一道题在一个窗口中展示两个图上下排列分别画正弦和余弦曲线那么最合理的方式是subplot(2, 1, 1); plot(x, sin(x)); subplot(2, 1, 2); plot(x, cos(x));figure函数用来创建新的图形窗口。figure(1)、figure(2)可以指定窗口编号。绘图题中如果需要同时展示多个独立的图形窗口就靠figure来区分。坐标轴控制方面xlim([0, 2*pi])和ylim([-1.5, 1.5])可以限定坐标范围axis equal让横纵坐标的刻度比例保持一致。绘图的视觉效果在这些函数控制下会比较标准考试中如果要求调整坐标轴显示范围让曲线看起来规整就要想到这些命令。3.3 特殊图形的考察除plot之外期末考试还喜欢考察一些统计图形函数。我整理成表格考前扫一眼足够用函数作用典型用法bar(x, y)条形图bar([1 2 3], [4 5 6])pie(x)饼图pie([10 20 30])histogram(x)直方图histogram(randn(1, 1000))stem(x, y)火柴杆图离散序列stem(1:5, [2 4 6 8 10])semilogy(x, y)y轴对数坐标semilogy(1:10, 10.^(1:10))loglog(x, y)双对数坐标适用于幂律数据的展示这里我特别提醒一下plot画的是曲线如果数据点是离散的并且你希望它们以独立点的形式呈现不加连接线那就应该用stem或者在plot的第三个参数里指定标记样式如ro。考试中就有这种题问你用什么函数能画出一组离散点的分布图很多人直接写plot然后忘了设置线型导致输出的是折线而不是点。text(x, y, 字符串)可以把文字标注在图形的指定位置。annotation更像是在整个figure上加标注但考试基本不会涉及后者知道text就够。4. 数值计算与符号计算拉开分数的板块这一章对不少人来说是一块硬骨头。它分为数值方法和符号方法两条路线很多同学容易把这两者的函数搞混。我们分开梳理。4.1 多项式操作与数据拟合考试常考的一类题目是给出一组散点数据让用多项式拟合并画图。核心函数是polyfit和polyval。x [1 2 3 4 5]; y [2.1 4.2 5.8 8.1 10.5]; p polyfit(x, y, 2); % 二次多项式拟合p是一个长度为3的向量代表从高次到低次的系数。注意这里的系数顺序是[a2, a1, a0]对应多项式a2*x^2 a1*x a0。这是高频易错点很多人以为p(1)是常数项实际p(1)是最高次项系数。拟合之后用polyval求多项式在指定点的值y_fit polyval(p, x); plot(x, y, o, x, y_fit, -);多项式求根用rootsp [1 -3 2]; % 代表 x^2 - 3x 2 r roots(p); % 结果是 2 和 1考试中如果给出多项式的根让你反推系数用poly函数。poly([2, 1])返回[1 -3 2]。这两个函数互为逆操作属于标准考法。4.2 线性方程组求解与数值积分线性方程组在MATLAB中求解极其简单左除运算符\是最常考、也最推荐的写法。A [2 1; 1 3]; b [5; 6]; x A \ b;这里x就是方程组的解向量。相比inv(A) * b用左除A\b更高效数值稳定性更好。考试中考过对比题问下列哪个方式是求解线性方程组Axb的推荐写法。答案就是左除。如果方程组有多个右端项即AX B其中B是多列矩阵也可以直接用X A \ BMATLAB会一次性求解所有列。这个点偶尔出现在理解题里。数值积分方面旧版常用的quad已经被integral取代。标准写法f (x) x.^2; result integral(f, 0, 1);注意匿名函数内部使用点乘.^因为integral会向量化地传入一系列横坐标点。如果写成x^2在传入长度大于1的向量时会报错。这个细节在考试选择/填空里很容易被设置成易错点。数值微分用diff它作用于向量时返回相邻元素的差。比如v [1 3 6 10]; diff(v) % 结果是 [2 3 4]这个结果比原向量长度少1。用它来近似求导时需要结合步长公式是diff(y) ./ diff(x)。考试偶尔会考这个思路。4.3 符号计算解方程、极限、导数与积分符号计算是MATLAB与普通数值计算软件最大的不同点。它依托符号变量进行精确运算结果通常还是表达式。声明符号变量用symssyms x之后x不再是一个具体的数字而是一个符号对象。在此基础上可以解方程eq x^2 - 5*x 6 0; solve(eq, x) % 结果为 2 和 3注意这里的是两个等号表示构建方程。单个等号是赋值在solve中几乎总是出错。这是考试中非常常见的错误写法。求极限limit(sin(x)/x, x, 0) % 结果为1求导数diff(x^3, x) % 结果为 3*x^2求不定积分和定积分int(x^2, x) % 不定积分x^3/3 int(x^2, x, 0, 1) % 定积分1/3这里的int是符号积分和数值积分的integral只差一个字母容易混淆务必分清符号积分用int数值积分用integral。符号表达式化简的高频函数是simplify、factor、expandsyms x simplify(cos(x)^2 sin(x)^2) % 结果为1 factor(x^2 - 1) % 结果为 [x-1, x1] 形式 expand((x-1)*(x2)) % 结果为 x^2 x - 2关于输出的精度vpa可以把符号结果转为任意精度的数值例如vpa(pi, 10)得到圆周率的10位近似值。而double则是把符号结果转为双精度浮点数。两者区别在于vpa保留可指定的有效数字位数double按机器精度转换。考试如果问如何将符号运算的结果转为数值常见答案就是double。5. 常见易错点与考前冲刺路径最后一个章节不留例题了直接把历年考试中错误率最高的细节点整理成速查表外加一套考前复习顺序。5.1 高频易错点速查表我把值得保存的内容做成表格考前看这一页就能规避大部分低级失误。易错点错误示例正确写法原因说明矩阵乘法与逐元素乘法混淆a * b长度为n的行向量a .* b两个行向量矩阵乘法维度不匹配else if连写else if x 0elseif x 0elseif是一个关键字忘记写hold on先plot再plot只显示后一张plot后加hold on新绘图默认覆盖旧图solve方程用单等号solve(x^2-1 0)solve(x^2-1 0)单等号是赋值双等号才是相等关系函数文件修改后未重新保存路径改完代码后直接运行结果没变保存文件再重新运行运行的是旧的函数文件矩阵索引从0开始for i0:n按C语言思路默认从1开始MATLAB所有下标索引从1开始混淆size和length用length求矩阵列数[r, c] size(A)length只返回最长维度的大小复数转置用错使用A但仍期望普通转置元素为实数时无影响含复数用A.A是共轭转置向量化循环时忘记点号匿名函数内写x^2写成x.^2向量传入时需要逐元素运算clear误使用close想清空变量写成closeclear清变量、close关图形窗口两个命令作用完全不同这个表里的每条都是我见过考生真实踩过的坑。特别是length和size的区别几乎每年都有选择题专门考察。length对矩阵返回行数和列数中较大的那个所以只有当你确认是向量或方阵时才合适。5.2 期末考前复习路径离考试还有一周左右的话按我的经验建议按这个顺序来先过一遍第1章的矩阵创建、索引、运算符。这些是最基础的东西一定要熟练到条件反射的程度。然后集中看第2章的分支循环和函数编写配合动手写几个小程序练手。第3章的绘图题建议直接在电脑上跑一遍重点是subplot和hold on的分区逻辑。绘图题是考试中的稳定送分题付出时间短、回报高。第4章先分清符号计算和数值计算的函数体系再重点练习求解方程、求极限、求导、求积分这四类标准题。最后一晚上把上面的速查表从头到尾过一遍然后合上电脑在纸上默写一遍function函数文件的基本结构和plot的标准代码片段基本就稳了。个人经验之谈期末MATLAB考试最亏的丢分方式不是不会写代码而是会写的题因为细节错了被扣分。等到成绩出来才发现自己和别人拉开差距的地方居然都在冒号、点号、几个字母的拼写上。你在这些细节上多花二十分钟可能比盲目多刷两套题更有价值。祝考试顺利。