不会吧,还有人不知道MATLAB这8个小技巧?

您所在的位置:网站首页 MATLAB如何运行绘图 不会吧,还有人不知道MATLAB这8个小技巧?

不会吧,还有人不知道MATLAB这8个小技巧?

2024-01-23 14:17| 来源: 网络整理| 查看: 265

上周末公众号的文章,留言区发起了一个话题,聊一聊大家最喜欢的一句MATLAB代码,结果留言区爆了,收到了400多条留言

我很好奇最受大家欢迎的Top5代码都有哪些,于是爬取了文章所有留言,做了一个词云

排名前五的代码分别是clc,clear,help,plot,close all,这些代码相信大家一定都不陌生

除此之外,还有很多非常不错的代码,即便推荐的人不太多,大家可以在词云里了解一下

上周分享了我最喜欢的一句MATLAB代码“呆b遇到错误就停”,今天来聊一聊,平时我在撸代码的时候,最喜欢的8个MATLAB小技巧

dbstop if error

01. 代码折叠

我个人最喜欢也最想推荐给大家的是,代码折叠

平时在开发Hao系列工具的时候,经常一个脚本要写上好几千行代码,如果没有代码折叠的话,整个脚本的可读性是非常差的

在我看来,代码折叠的重要性丝毫不亚于代码注释

最常见的代码折叠,像function,for循环,while循环,try/catch等等,都是能够在代码行左侧看到折叠标志的

这里我想推荐的是,通过两个连续的%%,对独立代码模块进行折叠,不过这个折叠功能并不是默认激活的,需要在MATLAB预设中添加设置

其中还有一个小插曲,好几年前,在我还不知道有这个操作的时候,我就很想对代码模块进行折叠操作,于是我就在每个代码块前面加了一个for循环,循环次数设为1,通过for循环对代码折叠

不知道有没有朋友和我有同样的经历…

02. Ctrl + =

推荐完代码折叠之后,不得不说的是,代码折叠的快捷键,毕竟手动逐个折叠代码这件事听起来还挺荒唐的

快捷键Ctrl + =实现所有可折叠代码的折叠操作

快捷键Shift + Ctrl + =实现所有可折叠代码的展开操作

两个快捷键,能把几千行的代码浓缩成几段注释,快速定位需要处理的代码块,再一键展开

03. Ctrl + r

聊到Ctrl的快捷键,我平时用的比较多,还有大家比较熟悉的Ctrl + r,对选取的代码行进行%注释处理,对应的逆向操作是Ctrl + t,也就是把代码行前面的%取消掉

应用的场景有很多,比如在我平时工具开发过程中,要做运算速度优化的时候,就会先把旧的算法Ctrl + r注释掉,然后尝试在原来的代码框架中研究新的算法

工作上用到的也不少,比如做Simulink系统仿真,我会写一个m文件定义仿真条件,同一个仿真条件会定义好几种不同的情况,像扭矩范围,转速范围等等,然后把同类型的条件做Ctrl + r注释处理,对所需的仿真条件Ctrl + t取消注释,sim运行仿真模型,这样就避免了每次仿真都需要重新定义条件的情况

04. 其他的Ctrl快捷键

除了前面提到的两个Ctrl快捷键,还有3个我用的比较多,Ctrl + i,Ctrl + g,Ctrl + f

Ctrl + i是必备的基础操作,m脚本中自动整理代码的快捷键,非常重要,甚至我都可以不要clc清屏,但一定要有自动整理代码的功能,不然写的脚本东倒西歪的没办法看

Ctrl + i的用法是,对鼠标所在的代码行进行缩进整理,也可以对选取的好几行代码段落进行整理,通常我更习惯的处理是,Ctrl + a全选,Ctrl + i缩进整理

不过,有时候我还挺头疼全选缩进整理的,因为几千行的代码整理完之后,发现光标停在了脚本最后一行,又要回过头找刚才处理的代码行

对于这个问题,推荐大家的快捷键是Ctrl + g,跳转到目标代码行

剩下的快捷键Ctrl + f,文本查找功能,大家应该都很熟悉,在很多其他软件里,查找的快捷键也是Ctrl + f

不过和其他软件有所不同的是,在m脚本中,可以直接双击选取要查找的内容,快捷键Ctrl + f,查找内容就已经在搜索框中了

05. Debug

我经常会在公众号后台收到不少朋友的私信,这类私信都有同一个特点,截了一张报错的图,然后问我为什么会报错

老实说,我既不知道你的脚本是怎么写的,也不知道workspace里是什么变量,最多我能帮到你的,只能是帮你把报错的英文内容翻译成中文

我很理解初学朋友的心情,但这并不是解决问题的正确方式

用MATLAB编程,最重要的是,要学会并习惯设置断点debug,这也是MATLAB的优势之一

当运行代码出现报错时,在报错代码行旁边设置断点并运行,运行到这行代码的时候会自动暂停,这时候就可以检查为什么下一句代码无法运行,是不是参数的维度不一致,或者数据类型有问题等等

关于断点debug,我还是更推荐文章开头的那句代码dbstop if error,避免二次运行查错,也更方便for,while循环过程中的debug

除此之外,推荐几个和debug相关的快捷键,这几个快捷键在m文件的按钮上也有显示

F5,运行脚本,另外debug模式下,可以继续执行完脚本

F10,debug模式下,执行下一行代码

Shift + F5,退出debug模式

06. Ctrl + c

接下来要介绍的是Ctrl + c,不要误会,安利的并不是复制,虽然确实有复制的作用

MATLAB在运行脚本过程,在命令窗口中,按下Ctrl + c,就能停止正在执行的MATLAB命令

应用的场景有很多,比如无休止的循环,上万次的网页爬取等等,总的来说,就是不想运行下去了,想强制退出,都可以使用这个操作

既然聊到循环的退出,这里顺便发散一下

像平时写while循环,或者用MATLAB写爬虫代码时,不管是无意的bug,还是客观情况导致的死循环,都是会有可能造成脚本运行无法停止,或者说运行时间过长的情况

用Ctrl + c强制退出脚本的方式,会导致无法获取脚本最终的运行结果

通常这种情况下,我会使用break跳出循环,break的条件设计有很多种

可以根据累加计数,如果达到多少次循环,而结果并未出现改变,就跳出循环

可以根据时间判断,如果超过一定时间,但结果没有更新,就跳出循环

07. doc

MATLAB的优势除了便捷的debug和workspace之外,非常详细专业的文档也是优势之一

我平时用的更多的是doc命令,其中有函数语法的介绍,使用案例,以及关联函数

和doc有类似功能的,像很多朋友提到的help命令,不过如果大家两种命令都体验过的话,应该会更喜欢doc,因为doc的文档可读性要比help强很多

除此之外,我用的比较多的还有open命令,open可以直接打开函数的源文件,大家可以直接学习系统自带的源代码,或者也可以根据自己的需求对源代码进行改写,比如我之前处理的股票蜡烛图,就是改写了自带的candle函数

08. winopen

最后一个想要安利给大家的是,winopen这个函数

我平时喜欢用MATLAB做一些非主流的操作,比如和其他软件做一些交互处理

这里就有可能会用到winopen,这个函数的作用是,在windows系统中用相应的软件打开文件,比如word,pdf,图片等等,还包括文件夹

就整体效果来说,等同于双击打开文件

以上就是今天关于MATLAB小技巧的分享

原本打算写个10条的,不过发现这篇文章的字数有点多,再写下去就停不住了,毕竟MATLAB里非常贴心的操作可没办法用数字来衡量,实在是太多了

今天聊的内容比较基础,希望对正在学习MATLAB的朋友们有所帮助

如果大家有兴趣的话,欢迎关注我的微信公众号“打浦桥程序员”,谢谢



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3