尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
MATLAB零基础入门:从矩阵运算到数据可视化
这篇学习笔记是系列第一篇定位很明确只要把MATLAB基础知识吃透——变量、矩阵、语法、绘图后面不管做图像处理、信号分析还是数值仿真都能直接上手。学过统计、做过信号处理、跑过仿真的人或多或少都碰到过MATLAB。我对它的定位一直是它不是一门让人学习编程思维的语言而是一台功能极其丰富的科学计算工作台。你不需要先背语法再干活反而是先想清楚我要算什么、画什么、验证什么然后打开文件就开始折腾哪一步不会就用help现查现用。这种边用边学的模式恰恰是MATLAB最舒服的打开方式。这篇文章面向的是零基础或刚接触MATLAB不久的人。我会把最常用、最容易被忽略的基础点串起来三个窗口怎么用、变量和数据类型怎么理解、矩阵运算和数组运算有什么区别、脚本和函数怎么组织、绘图怎么入门最后再整理一个能复现的小实验把前面所有知识点揉在一起。你也可以直接跳过理论部分先跑一遍最后一章的Demo遇到不懂的地方再回来看对应章节。1. 为什么选MATLAB打地基它是披着编程外衣的科学工作台1.1 这个工具到底解决什么问题先搞清楚MATLAB的定位。它的核心能力是矩阵计算和数据可视化。早期它叫Matrix Laboratory名字里就写着矩阵实验室。你可以把它理解成一个超级计算器这个计算器能存整个表格数据、能对整批数据统一运算、能画图、能拟合曲线、能解方程、能跑仿真。举个例子你就明白了。用普通方式处理一组数据通常是循环里逐个算但在MATLAB里你写一行A * 2 1整个矩阵里所有元素都乘2再加1。这种对整体数据做批量运算的思维方式是所有后续学习的基础。很多第一次接触MATLAB的新手最容易犯的毛病就是把C语言、Python那套循环思维搬过来明明一行能解决的事非要写三层for循环。1.2 什么类型的工作适合用它我在实际辅导中经常遇到两类学生一类是拿着MATLAB当万能工具什么项目都想往里面塞另一类是听学长说MATLAB不行就彻底绕开它。其实两者都偏了。MATLAB真正强的地方在于快速验证算法、处理矩阵相关数据、画科研插图、做仿真模拟。比如你导师丢给你一份实验数据让你先看看趋势你半小时内就能导入、清洗、画图、给出统计量这个效率是很多通用语言比不了的。但如果你要写一个对性能极度敏感的商业服务端、或做一个需要嵌入用户手机的交互应用那MATLAB就不太合适那时候Python或C语言更对路。所以我的建议是把MATLAB当作第一门上手工具它会帮你建立数据怎么组织、结果怎么可视化的直觉。等需要做工程落地的时候再去学别的语言你不会白学因为分析思路是通用的。2. 第一次打开软件要弄清楚的三个窗口命令行、工作区、当前文件夹2.1 三个窗口各自干什么安装完成首次打开界面看起来有点复杂但真正影响日常使用的只有三个窗口我建议第一天就把它们的大致分工搞明白。窗口作用最常用场景命令行窗口输入单条命令回车立刻执行查帮助、测试表达式、临时算个数工作区显示当前存在的所有变量检查变量值、双击查看矩阵内容、右键保存数据当前文件夹指向你正在使用的目录存放和查找脚本、数据文件、函数文件提示把当前文件夹这个概念放在心里。MATLAB里出现找不到文件未定义函数或变量这类报错十次里有八次是路径问题。2.2 把路径问题从第一天就解决掉打开MATLAB后第一步不是写代码而是养成本目录管理习惯。最简单的做法是每次开新项目就新建一个文件夹然后在MATLAB顶部把它设置为当前文件夹。路径相关的三个命令我一直在用pwd % 显示当前路径相当于看我在哪个目录 cd D:\work\demo % 切换目录 which xxx % 查看某个名字对应的文件在哪其中which特别实用。当你写了个函数叫test运行后却报错或执行了别的东西用which test看一下它到底定位到哪个文件问题往往一眼就能看出来。2.3 三个小习惯分号、注释、help第一天我只要求你记住三件事。第一语句末尾加分号。分号的作用是执行但不显示结果。你不加分号MATLAB会把每个中间步骤的结果都打印出来既刷屏又拖慢速度。我见过太多新手跑一个循环命令行窗口滚出几万行数据最后只能关掉重开。第二注释永远不嫌多。单行注释用%区块注释用%{和%}。不要觉得这是我的代码过两天我还记得。实测经验是一周之后你连自己写的变量名都可能认不出来更别说思路了。第三遇到不懂的函数第一时间敲help 函数名。比如help plot会显示用法和样例链接doc plot会打开图文版文档比到处搜网页快得多。还有一个被很多人忽略的命令是lookfor 关键词你不记得函数叫什么名字时用它按功能搜。比如lookfor 傅里叶就能找到相关函数。3. 变量与数据类型先学会给数据贴标签3.1 变量命名规则以及变量覆盖MATLAB的变量命名很宽松本质上就是一个名字对应一块数据。你可以直接写x 3 y x 5工作区里就会多出x和y两个变量。命名原则我总结成几条不能以数字开头不能含空格和运算符尽量别用中文不要用len、sum这类容易和内置函数撞车的词。如果实在要用name这种通用变量名注意先查一下which name看看是否覆盖了内置功能。这里要专门提一下变量覆盖问题。MATLAB是允许你用变量名覆盖掉内置函数名的比如你写sin 10之后再调用sin(pi/2)就会报错或得到意外的结果。解决方式很简单执行clear sin清掉这个变量。这是新手最容易踩、又最难想到的坑。3.2 常用数据类型速查MATLAB默认存储任何数字都是双精度浮点数也就是double类型。你不需要像C语言一样先声明int还是float。但另外几种类型你需要认识类型用途例子double普通数值默认类型3.14, 42char单个字符或字符串数组hellological逻辑真伪true, falsecell可以装不同类型数据的大盒子{张三, 23, [1,2,3]}struct带字段名的数据集合student.name我建议新手重点掌握cell和struct因为实际数据经常是混合类型的。比如导出一份学生成绩表里面有姓名、学号、分数分数是数值姓名是文本你很难用纯矩阵存但可以用cell或struct轻松搞定。3.3 数字世界的四个特殊成员MATLAB里有几个特殊值新手经常被它们吓到NaN表示不是一个数。比如0/0的结果就是NaN。做数据清洗时它很常见可以用isnan(x)来定位缺失值。Inf无穷大。1/0会得到它后面做计算时要小心因为Inf会传染任何数加Inf还是Inf。eps浮点数相对精度的下限。MATLAB里判断两个数相等时很少直接用而是看它们的差值是否小于某个容差。pi圆周率但注意它是一个浮点值虽然精度很高不是数学上的精确 π。如果你算出来的结果显示 }1.0000000000000002{ 这种末尾带小尾巴的数值不用慌这是因为电脑用二进制存十进制小数时本身的精度限制。用format long或format short切换显示位数同时可以借助round(x, n)来四舍五入。4. 矩阵才是MATLAB的心脏这节不掌握后面全白学4.1 构造矩阵的几种姿势在MATLAB里最核心的数据结构是矩阵。普通语言里的标量单个数字在MATLAB里其实被当作1×1矩阵字符串则常被看作是字符矩阵。所以矩阵这个概念是绕不开的。创造矩阵的方式很多记住这几种基本够用A [1, 2, 3; 4, 5, 6]; % 方括号里分号表示换行 B 1:5; % 结果是 [1 2 3 4 5] C 0:2:10; % 从0到10步长2 D linspace(0, 1, 7); % 0到1之间均匀取7个数 E zeros(3, 2); % 全0的3行2列矩阵 F ones(2, 4); % 全1矩阵 G eye(3); % 3阶单位矩阵 H rand(3, 3); % 均匀分布的随机矩阵特别注意1:5和linspace(0,1,7)的区别。冒号写法是按步长生成linspace是按个数生成。很多新手在这两个逻辑上出错想要100个点结果写成了1:100于是得到从1到100共100个点但如果范围是0到10:0.01:1会产生101个点而不是100个想要恰好100个点就得用linspace(0, 1, 100)。4.2 索引和切片先从1开始而且用的是圆括号这是MATLAB和大多数编程语言最不一样的地方数组下标从1开始不是0。我见过无数次新手敲A(0,1)然后报错一脸茫然。记住规则就行第一行第一列是A(1,1)。索引时用圆括号不是方括号A [10, 20, 30; 40, 50, 60]; A(2, 1) % 第二行第一列结果是40 A(:, 1) % 所有行的第一列结果是 [10; 40] A(1, :) % 第一行的所有列 A(2, [1,3]) % 第二行的第1列和第3列 A(end) % 最后一个元素end是一个很方便的关键字表示到末尾。比如想删除矩阵最后一列直接A(:, end) []就能做到。这句代码意思是把最后一列设为空在MATLAB里合法且非常常用。4.3 分清*与.*、^与.^这是整个基础阶段最容易混淆的点我建议你单独做几道题练一下。不带点号的*、/、^是矩阵运算遵循线代规则。比如矩阵乘法要求左矩阵列数等于右矩阵行数。带点号的.*、./、.^是数组运算对应元素逐个计算只要求两个矩阵尺寸一致或满足广播条件。看一个具体例子A [1, 2; 3, 4]; B [2, 0; 0, 2]; A * B % 矩阵乘法结果是 [2, 4; 6, 8] A .* B % 对应元素相乘结果是 [2, 0; 0, 8] A ^ 2 % 矩阵自己乘自己A*A A .^ 2 % 每个元素平方结果是 [1, 4; 9, 16]脑子里可以把不带点的看成整块操作带点的看成逐位操作。后面画图、处理图像、算统计量时绝大多数情况用的是带点的那组。4.4 学会整体操作能不用循环就别用循环既然矩阵能整体运算很多循环就没有必要了。比如把矩阵里所有大于5的元素改成0新手容易写成两层for循环但其实一句话A(A 5) 0;这个技巧叫逻辑索引括号里放一个逻辑表达式返回满足条件的位置然后直接赋值。类似的还有mean(A, 2)按行求平均、sum(A, 1)按列求和。掌握这些整体操作代码短、执行快、还不容易出现循环下标越界的错误。5. 让代码有逻辑脚本、循环、函数5.1 从命令行到脚本把操作变成文件在命令行窗口里输入语句回车就执行适合验证想法但没法复用。真正干活时要新建脚本文件点新建脚本或直接用edit myScript.m。脚本文件就是把一串命令按顺序放进去点运行就从上到下执行。建议你在脚本里用%%做分段。这是个大杀器写了%% 数据导入那一段就会高亮成一个可单独运行的区块方便一段一段调试不用把整个几百行的脚本从头跑一遍。我强烈建议从一开始就养成这个习惯。5.2 if、for、while够用就好分支和循环无论在什么语言里都是基本功MATLAB的语法很直白x 10; if x 5 disp(x比较大); elseif x 0 disp(负的); else disp(中间值); end for i 1:5 disp(i); end while x 0 x x - 1; end要注意每行条件结束不用加分号end不能漏。实际中最容易被忽略的问题是循环里不要反复打印变量否则执行很慢。想抽查运行进度可以在循环里用if mod(i,1000)0每1000次输出一次。5.3 函数文件的第一行是命门脚本和函数最重要的区别在于函数有输入输出参数能传值、能返回结果。在MATLAB里写函数文件里第一行必须是function开头的声明否则就变成脚本了。function y mySquare(x) % 计算平方 y x .^ 2; end这个文件需要保存为mySquare.m文件名必须和函数名一致。我在这里踩过无数次坑文件名写成了my_square.m函数名写成了mySquare运行时报错还找不到原因。还有一个更容易忽略的规则函数文件里除了函数声明之外不要在同一个文件里写不少函数之外的 顶层命令否则MATLAB会把函数部分忽略只当脚本执行。6. 让数据看得见绘图基础6.1 一行plot绘图是MATLAB吸引人的地方。画一条曲线只需要x linspace(0, 2*pi, 100); y sin(x); plot(x, y);这个操作会弹出一个单独的图窗显示 x-y 的关系曲线。命令执行后图形窗口会自动打开你可以手动缩放、添加文字、保存图片。6.2 让图拿得出手的几个基本修饰很多初学者画完图就交差但实际用的时候图是要写进报告、放进论文的。那时候你就会发现一张没有坐标轴标签、没有图例、没有网格的图根本没法看。至少这四条要习惯plot(x, y, LineWidth, 2); xlabel(时间 (s)); ylabel(振幅); legend(sin(x)); grid on;手里还有一组对比曲线时用hold on把多条曲线画在同一张图上。要注意的是画完一组数据后如果不执行hold off后续新图还会叠加在旧图上很多人因此画出乱七八糟的叠加图。6.3 subplot排版与散点、直方图如果想在一个窗口里排列多张子图用subplot(行数, 列数, 序号)。比如subplot(1, 2, 1); plot(x, y); subplot(1, 2, 2); scatter(x, y);除了plot日常用得比较多的还有scatter画散点图、histogram画直方图、bar画柱状图。它们的使用逻辑和plot几乎一样传入数据、加上标签、调整样式。这些绘图函数的共同特征是接受向量或矩阵作为输入前面吃透矩阵操作这边就会顺畅。7. 我踩过的常见坑汇总写给下一个新手7.1 中英文标点与输入法这个坑特别隐蔽。在MATLAB编辑器里中文输入法下的分号、逗号、圆括号都是全角字符MATLAB根本识别不了。新手最容易出错的场景就是注释里写中文后忘了切回英文下一行代码直接爆红。注意当命令行窗口出现错误意外的运算符或者红色波浪线标在语句开头时先检查是否混入了全角字符尤其是分号和逗号。7.2 文件名不能叫什么文件名有一类雷区用一句话总结不能以数字开头不能有空格不能是MATLAB的关键字或内置函数名。像1.m、my data.m、if.m都是不可用的。特别要提的是别把脚本命名为plot.m、test.m这种和内置函数重名的名字因为MATLAB会优先找当前目录的文件一旦调用plot加载的可能是你那个乱七八糟的脚本行为完全无法预期。7.3 变量被覆盖、clear all 的滥用前面提过变量覆盖内置函数的坑这边再深入一下clear。很多人一出问题就clear all清空一切这在调试时非常危险会把辛苦导入的数据全删掉也会把断点变量清掉。我建议的做法是只清理具体的变量用clear x y或者实在乱了就close all关掉图窗然后再用clear清空工作区。7.4 浮点数比较别直接用这是我见过的另一类高频错误。比如循环for i0.1:0.1:1你在循环里判断if i 0.3很可能会错过条件因为0.3在二进制里存的是近似值。正确做法是判断差值if abs(i - 0.3) eps disp(相等); end以后处理实验数据时这个思路非常重要。大量真实测量值不会精确到刚好等于某个值用容差判断是基本素质。7.5 不要硬扛用断点和 dbstop代码报错不可怕可怕的是不知道错在哪。新手常见操作是满屏打印变量或者一段段注释排查。其实有更省力的做法在编辑器行号旁边的横条上点一下设置一个断点运行到那一行就会暂停此时你可以逐个查看变量当前值、继续单步执行。还有一个救命的命令dbstop if error加了它之后任何未捕获错误都会在出错的那一行停下来而不是直接把整段脚本中断在某个你不明所以的位置。8. 把基础串一遍复现一个数据分析Demo8.1 场景设定假设现在我们要完成一个小任务生成1000个服从正态分布的随机数计算它们的均值、标准差、最大值和最小值并画出直方图与累积分布曲线最后把统计结果输出到文本里。这个任务覆盖了变量、随机数、内置函数、绘图、输出是检验基础的绝佳试金石。8.2 完整代码与逐行说明打开脚本文件把下面的代码保存为demoStats.m建议你手敲一遍不要直接复制因为代码敲得越慢语法记忆越牢。%% 生成数据 rng(42); % 固定随机种子保证结果可复现 data randn(1000, 1); % 1000行1列标准正态分布 %% 计算统计量 avg mean(data); sd std(data); maxVal max(data); minVal min(data); fprintf(均值: %.4f\n, avg); fprintf(标准差: %.4f\n, sd); fprintf(最大值: %.4f\n, maxVal); fprintf(最小值: %.4f\n, minVal); %% 画图 figure; subplot(1, 2, 1); histogram(data, 40); % 40个条形 title(频数分布); subplot(1, 2, 2); x sort(data); y (1:1000) / 1000; % 累积比例 plot(x, y, LineWidth, 1.5); title(累积分布曲线); grid on;第一行rng(42)是很多人会忽略的关键操作。它让随机数发生器固定下来于是每次运行这行脚本data都完全相同。在做可复现研究时这个小小的种子值能让别人跑出来的结果和你一致否则每次运行randn都是不同的一组数据实验结果没法沟通和核对。fprintf是格式化输出的命令%.4f表示保留4位小数。这一段设置了固定格式最终在命令行窗口能看到整齐的统计结果比直接用disp(avg)更能控制输出外观。画图部分用了subplot分左右两张图。左边直方图看数据大致分布右边累积分布曲线看单调增长趋势。这两张图拼在一起基本能反映一个随机变量的分布形态。8.3 复盘清单确认你掌握了什么跑完这个Demo之后建议你按下面这张清单自查一遍每个项目如果不能独立说明白就回到对应章节补课工作区里data的尺寸是1000×1打开它能不能看到一个长列数字如果把rng(42)删掉再运行一次均值、标准差会不会变为什么如果想让直方图有20个条形应该改哪里如果想让fprintf输出保留2位小数应该改哪个格式符为什么plot(x, y)之前要先执行sort(data)这五个问题都能答上来说明你的MATLAB基础知识已经过关接下来可以放心去学绘图进阶、数据处理、Simulink仿真或者各类工具箱了。最后说一个我在实际教学中反复强调的体会MATLAB不要死记硬背把它当成一个巨大的交互式计算本来用。忘了函数就help不确定结果就随手跑一下看工作区写长代码务必用%%分段。第一遍打基础用这篇笔记的Demo做起点每天动手敲几行、改几个参数比一次性啃完一本几百页的书有用得多。
RELATED

相关推荐

多输入多输出LSTM时间序列预测:从数据处理到模型训练的完整指南

多输入多输出LSTM时间序列预测:从数据处理到模型训练的完整指南

简介:基于LSTM的多输入多输出时间序列预测项目,面向深度学习和数据挖掘方向的初学者与研究者,适用于空气质量、电力负荷、股票走势等多变量回归与预测场景。压缩包共126个文件,主体为75个Python脚本、26个CSV数据文件和15个TXT说明…

📅 2026/10/12 12:18:44
VSCode Remote-SSH 远程开发配置避坑:从密钥认证到端口转发的完整实践

VSCode Remote-SSH 远程开发配置避坑:从密钥认证到端口转发的完整实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/12 12:18:44
Nginx双机主备高可用:Keepalived+VIP漂移实战与避坑指南

Nginx双机主备高可用:Keepalived+VIP漂移实战与避坑指南

1. 为什么单台Nginx扛不住,双机主备到底在解决什么问题很多团队在项目初期都习惯把Nginx往一台机器上一装,配好反向代理和负载均衡就完事了。流量小的时候确实没问题,单机跑个几千QPS跟玩似的。但一旦业务上了规模,或者对可用性有…

📅 2026/10/12 12:13:44
MORE NEWS

更多资讯

📰

2026腾讯云618活动说明及Hermes Agent/OpenClaw配置Token Plan新手快速入门

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

电力线通信多径信道建模与MATLAB仿真实现

简介:这是一份电力线通信(PLC)信道建模的Matlab学习资源,面向通信专业学生、科研人员与PLC系统设计工程师,聚焦多径传播和噪声环境下信道特性的仿真分析,可帮助读者把抽象信道理论转化为可运行代码。资源包…

📰

遗传算法优化VMD参数:Python实现与避坑指南

简介:这份资源面向信号处理、故障诊断与优化算法方向的学习者和研究人员,提供用遗传算法自动寻优变分模态分解(VMD)关键参数的Python实现。VMD的模态个数K与正则化参数α直接决定分解质量,人工试凑效率低,而…

📰

Agent 面试知识树 + 高频追问答案库:用 TaoToken 统一 Key 跑通多模型追问演练

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

流感预测实战:ARIMA+LSTM+Transformer三模型组合实现

简介:面向计算机专业课程设计与期末大作业的流感时间序列预测Python项目,整合ARIMA、LSTM、Transformer等经典统计与深度学习方法,适合正在做期末大作业、课程设计以及需要项目实战练习的学习者,可同时作为多模型对比实验与建模流…

📰

Python股票预测毕业设计:数据清洗与标签构造实战指南

简介:本资源是一套高分(98分)毕业设计级项目,面向计算机及相关专业本科生、研究生及机器学习初学者,聚焦股票价格预测与量化分析实战需求,提供从数据获取、特征工程、模型训练到结果可视化的完整技术闭环。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬