首页 / 资讯中心 / 文章详情

MATLAB零基础入门教程:从界面到脚本与绘图

MATLAB零基础入门教程:从界面到脚本与绘图 ★ FEATURED ARTICLE
MATLAB 这玩意儿刚接触时真能让人原地劝退。第一次打开满屏英文菜单、乱七八糟的面板命令行里光标一闪一闪好像你在键盘上敲什么都可能报错。但其实把它想简单一点就行MATLAB 就是一个“计算器 编程本 画图板”三合一的工具你在纸上怎么算在它里面就怎么敲只不过它算得快、画图好看、改起来方便。这篇东西就是写给纯零基础的人不扯线性代数推导不整花哨的仿真案例就老老实实把“怎么打开、怎么敲命令、怎么写第一个脚本、怎么画第一张图、报错了怎么办”讲清楚。有编程经验的人可以跳过界面部分直接看矩阵和调试纯小白建议从头顺着读一遍再照着敲一遍比光看强得多。先说说我自己的体会很多教材上来就甩一大串函数名告诉你这个是干什么的、那个是干什么的看完一头雾水。真正有效的路径是——先跑通一个完整的小流程比如“造一组数据 → 算个平均值 → 画个图 → 存成文件”只要这条链路走通一次MATLAB 的基本操作就有七成上手了。接下来的内容基本都是沿着这条路展开的。1. 先别急着敲代码把界面认清楚1.1 五个核心区域分别是什么MATLAB 的默认界面R2020 之后的版本长得很像现代办公软件五个区域搞清楚你就不会再觉得慌了当前文件夹Current Folder左边这一栏显示你工作目录里的文件。你写的脚本、数据文件都在这里能看到。刚安装完默认目录一般是用户文件夹下的 MATLAB 文件夹建议在这里建一个自己的项目文件夹不然文件散得到处都是。编辑器Editor中间最大的区域。写脚本、写函数都在这类似 Word 但它是纯代码界面。第一次打开时这个区域可能不显示你点工具栏的“新建脚本”就会弹出来。命令行窗口Command Window大多数人认识的 MATLAB 就是它。语法是你输入一行、回车它立刻算一行适合做实验、查函数、跑小命令。工作区Workspace右上角。你算出来的变量都存在这里双击变量还能打开表格看数据排查问题的时候非常有用。详细信息Details右下角选中工作区某个变量时这里会显示它的类型、大小、存储空间。注意新手最常见的困惑是“我的脚本跑出来怎么没反应”——先看一眼你是在编辑器里按了运行还是在命令行一行行敲。命令行里敲a 1会直接回显结果脚本里如果每行末尾有分号运行后不会有输出这不是没执行是分号把回显关了。1.2 上手前建议先改的两个默认设置我每次在新电脑装完 MATLAB第一件事就是改两个设置能省掉后面大量麻烦。第一个是当前文件夹。默认情况下 MATLAB 打开后会在你上次退出的目录这会让你找不到脚本。点工具栏的“主页 → 设置路径”把你常用的工作文件夹加到路径列表里或者更简单——每次打开后先cd到你建好的文件夹养成习惯。第二个是编辑器字体与行号。“预设”里把字体调成等宽字体、字号放大一点并在编辑器里打开“显示行号”。报错的时候行号是最重要的定位线索没有行号的报错提示等于让你在整篇代码里大海捞针。提示还有一个容易被忽略的——把“退出时记住工作区变量”这个选项关掉或者干脆养成clear的习惯。不然你某天打开 MATLAB发现工作区里躺着一堆上次遗留的变量而这些变量你这次根本没定义脚本运行结果就会变得莫名其妙。2. 最常用的基础指令会这些就能干活了2.1 变量赋值与数据类型MATLAB 里变量赋值极其简单就是变量名 值a 1; % 数值 b hello; % 字符串注意是单引号 c [1 2 3]; % 行向量空格或逗号分隔 d [1; 2; 3]; % 列向量分号表示换行 e [1 2; 3 4]; % 2行2列矩阵这里有两个关键点。第一变量名区分大小写a和A是两个不同的变量新手在这上面吃过不少亏。第二分号不只是换行。在命令行窗口不加分号回车会立刻把结果显示出来加分号表示“执行但不要回显”。写脚本的时候如果每行都加分号运行界面干干净净只在你有意输出的地方才不加分号。数据类型方面新手阶段你只要记住几种double默认数值类型所有小数、整数默认都是它。char和string文本类型。char是单引号包裹的字符数组string是双引号包裹的字符串对象。早期课程和旧函数多用char新代码用string更方便。logical逻辑类型就是true/false比较运算和条件判断的结果。cell细胞数组用大括号{}创建可以往里面塞不同类型的数据比如{1, a, [2 3]}。它就像一个“杂货箱”以后处理混合数据时离不开。2.2 矩阵操作MATLAB 的灵魂MATLAB 全名叫 Matrix Laboratory矩阵实验室。它最核心的思维方式就是“一切皆矩阵”——单个数值是 1×1 的矩阵一列数据是列向量一张灰度图是 M×N 的矩阵。理解这一点你就能理解为什么 MATLAB 在很多计算任务里比其他工具顺手你不用写循环去遍历元素直接对整个矩阵做运算就行。比如你有一组考试成绩向量scores [78 92 85 66 88]想算平均分、最高分、有多少人及格三行命令mean(scores) % 平均分 max(scores) % 最高分 sum(scores 60) % 比较运算生成逻辑向量再加和sum(scores 60)这行是经典中的经典——先做比较得到一个由true/false组成的逻辑数组true在数值运算里当 1 用求和就是及格人数。这个思路在后续任何“统计满足条件的个数”场景里都通用。再看矩阵索引。这是新手最容易懵的地方因为 MATLAB 的下标从 1 开始和很多从 0 开始的编程语言不一样。设M [10 20 30; 40 50 60]M(1,2) % 第1行第2列结果是 20 M(2,:) % 第2行所有列结果是 [40 50 60] M(:,1) % 第1列所有行结果是 [10; 40] M(1:2, 2:3) % 第1到2行、第2到3列的子矩阵 M(end, 1) % 最后一行的第1列end 表示末尾end是 MATLAB 特有的关键字表示“这一维度的最后”在很多场景里能省去先获取尺寸再索引的麻烦。另一种常见取法是用冒号把矩阵拉成一个长列向量M(:)会把所有元素按列优先顺序排成一列有时候处理数据排序和重塑时很实用。2.3 常用数学函数与向量化思维数学函数名基本和习惯写法一致sin、cos、exp、log、sqrt、abs、round、floor、ceil。要注意log在 MATLAB 里是自然对数log10、log2才是对应底数。这个坑我见过太多人踩——在 MATLAB 里算常用对数却用了log结果数值对不上。向量化思维是指不要写循环去逐个元素操作而是直接用函数对整组数据操作。比如生成 0 到 6 范围内每隔 0.1 取一个点的正弦值x 0:0.1:6; % 等差序列从0到6步长0.1 y sin(x); % 直接得到和x同样长度的向量这个写法比 for 循环快几个数量级而且代码短、不容易写错。等你以后做数据分析、图像处理会发现“能向量化就别写循环”是 MATLAB 的一条黄金法则。不仅仅是速度问题代码可读性也高很多。3. 脚本的完整实操流程从新建到运行3.1 新建脚本、保存与运行写稍微复杂一点的东西就别在命令行一行行敲了用编辑器写脚本。点“新建脚本”或按CtrlN编辑器打开后输入% 我的第一个脚本 x 0:0.1:2*pi; y sin(x); plot(x, y);保存时注意文件名不要用中文不要有空格不要以数字开头避免和朋友的名字同名。比如my_first_plot.m就规范。另外文件名不能和 MATLAB 内置函数同名比如你保存成plot.mMATLAB 会懵掉——运行时它分不清你是要调用内置 plot 还是自己写的这个文件。运行脚本有三种方式在编辑器里点绿色“运行”按钮按F5在命令行窗口输入文件名不带 .m。第三种方式是命令行最基本的交互逻辑你要运行某个脚本就在后面敲它的名字。脚本正常运行后代码里创建的变量都会出现在工作区方便你检查每一步中间结果。3.2 注释、分号与调试技巧注释用%这一行在%后面的内容不会被执行。写注释的作用不只是以后别人看懂你的代码更是让一周后的你自己看懂。我见过太多同学写作业时注释写得很全期末回来复习一看代码连自己都快认不出来了。调试是新手最需要的技能但很少人主动教。最简单的调试流程分三步代码运行出错后看命令行窗口的红色报错信息从最底部往上找最后一行往往是真正原因。点击报错中提到的那一行右侧的数字设置断点——一个红色圆点。运行脚本程序会在这个断点处暂停。暂停后把鼠标悬停在变量名上就能看到当前这个变量的值。用“步进”按钮可以一行一行执行观察每个变量的变化过程。经验新手调试最大的误区是“盯着代码看试图用肉眼找出逻辑错误”。代码是写给机器执行的不是写给人眼做静态分析的。与其盯着看不如把中间变量打出来、用断点单步走一遍数据到了哪一步不对问题基本就在那附近。这个方法在 MATLAB 里反复用排查速度能翻好几倍。3.3 实时脚本Live Script适合什么时候用MATLAB 从 R2016a 开始引入了实时脚本.mlx文件界面更接近 Word代码和结果、图表混排显示而且有分节执行功能。带分节符的实时脚本可以只运行某一节不用每次从头跑全部代码做数据探索和课程报告非常爽。但我的建议是基础学习阶段还是用普通脚本.m。因为实时脚本的交互方式会掩盖一些执行逻辑的细节比如变量的生命周期、代码执行顺序而且很多老教程和网上的参考代码用的都是.m。等到你对 MATLAB 的基本流程有把握了再用.mlx做演示和报告效率更高。工具没有好坏只有时机对不对。4. 画图入门让数据自己说话4.1 plot 函数的正确打开方式plot是 MATLAB 里使用频率最高的绘图函数。最基础用法就是两个等长向量x 0:0.1:2*pi; y sin(x); plot(x, y);这样会弹出一个独立的图形窗口默认用蓝色实线画。想改颜色、线型、标记符用第三个参数比如r--o表示红色虚线加圆圈标记。常见控制符有控制符含义控制符含义b蓝色-实线r红色--虚线g绿色:点线k黑色-.点划线o圆圈标记*星号标记s方块标记^上三角标记另一个高频场景是在同一张图里画多条曲线。最简单的做法是连续调用plot但默认每次都会新开一个图形窗口把上一次覆盖掉。解决办法是用hold onplot(x, sin(x), b-); hold on; plot(x, cos(x), r--); hold off; legend(sin, cos);hold on的意思是“在当前图形上继续叠加绘制”hold off恢复默认行为。很多新报错“我画了两条线怎么只剩一条”绝大部分情况就是忘了hold on或者用了它之后没hold off导致后续的图全部叠在一起。画完图记得加标题、坐标标签和图例title(正弦与余弦曲线); xlabel(x); ylabel(y); grid on; % 打开网格方便读数4.2 图像修饰与导出画完图之后图形窗口顶部菜单上可以直接编辑加标题、改坐标范围、插入文字。不过更推荐用命令控制因为可复现、可批处理。常用两个函数xlim([a b])和ylim([a b])手动控制坐标轴范围text(x, y, 内容)在指定坐标处加文字标注。保存图片的方式有讲究。最快捷的是在图形窗口菜单栏点“保存”但默认格式清晰度一般。做报告时我一般用命令导出saveas(gcf, my_plot.png); print(-dpng, -r300, my_plot_highres.png); % 300dpi高清gcf是 get current figure 的缩写指当前图形窗口。-r300指定 300 分辨率用来打印和正式报告足够。新手最容易忽略的问题是图片中文字太小——默认字号在投影和打印时经常看不清。养成习惯绘图命令里带上字号参数比如xlabel(x, FontSize, 12)或者直接用set(gca, FontSize, 12)把整个坐标轴的字号统一调大。5. 常见报错与问题排查这些坑我全踩过5.1 高频报错速查表报错信息原因解决办法Undefined function or variable xxx变量名拼错、变量还没定义、函数文件名不对劲检查拼写确认代码里先定义了该变量检查工作区变量是否被clearIndex exceeds matrix dimensions索引超过矩阵范围用size看矩阵维度检查索引变量数值Error using plot, Vectors must be the same lengthplot 的两个向量长度不一致用length(x)和length(y)比对长度Input must be a valid matlab expression命令行里输入了中文符号或格式问题确认所有括号、引号都是英文半角Matrix dimensions must agree矩阵运算维度不匹配检查两个参与运算的矩阵大小是否能相乘/相加5.2 三个最容易踩的隐蔽坑第一个坑是中文输入法问题。MATLAB 里所有标点符号必须是英文半角但中文输入法动不动就把逗号、括号、引号变成全角代码复制进去直接报错。报错信息还不容易看懂因为它只提示“表达式无效”。我的习惯是在写代码时切换成纯英文输入法或者至少注意输完标点后看一眼颜色——MATLAB 编辑器里字符串是粉色的注释是绿色的代码是黑色的。如果引号颜色不对多半是输入法导致符号出问题了。第二个坑是变量名覆盖内置函数。当你写了mean 5之后再去调用内置的mean函数求平均值MATLAB 不会报错但会把 5 当函数用——然后报一个让你摸不着头脑的错误。原因是 MATLAB 变量优先级高于内置函数。排查的方法很简单在工作区看有没有奇怪的变量名用clear mean删掉你这个变量就恢复正常了。第三个坑是路径问题。明明脚本保存在某个文件夹在命令行里输入文件名却说找不到。八成原因是 MATLAB 当前路径不在那个文件夹下。记住pwd查看当前路径cd切换路径dir查看当前目录下的文件。写完脚本把文件放在当前文件夹或者用addpath添加路径才能保证运行顺畅。提示还有一个看起来不起眼但很实用的技巧——clear all通常在每次运行脚本前都会敲一遍。它会把工作区变量全部清空避免上一次遗留变量影响本次运行结果。不过注意clear all也会清除断点调试时谨慎使用改用clear只清变量就行。6. 一个能帮你提速十倍的工作习惯最后分享一个我用了很久的习惯建立一个“代码片段库”。刚学 MATLAB 时每次用到“读取 Excel 数据”“画多条曲线”“统计分组均值”这些常规操作都得临时翻教程。后来我把常用的代码块整理成一个my_notes.m脚本按节分区写需要用的时候直接复制再改参数就行。这个文件里通常包括读取和写入文件的标准代码、绘图的完整模板含字号、标题、网格、图例、常用统计函数的示例、以及我自己踩坑后的注释。这样做的好处不只是省时间——每次复制自己的旧代码你都在强化对基本语法的记忆还能不断发现代码可以优化的地方。新手阶段最容易犯的毛病是“收藏了一大堆教程却从来没有自己完整敲过一个脚本”。MATLAB 和游泳、骑自行车一样看十遍不如上手一次。照着我前面说的流程从生成数据、算统计量、画图、保存图片完整走一遍你就能脱离“看着教程才敢敲代码”的状态。等到你再往深处走无论是做数据处理、图像处理还是数值计算前面打好的这些底子都会成为最坚实的基础。
阅读完成 · 觉得有帮助?
咨询建站