上周末公众号的文章,留言区发起了一个话题,聊一聊大家最喜欢的一句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的朋友们有所帮助

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

matlab cftool光滑曲线导出为什么就不光滑了_不会吧,还有人不知道MATLAB这8个小技巧?...相关推荐

  1. matlab cftool光滑曲线导出为什么就不光滑了_快速傅里叶变换(FFT)中为什么要“补零”?...

    为了大家能够复现各个图中的结果,我附上了所有我编写的MATLAB代码. 创作不易,未经允许,禁止转载. 另外,说明一下,用MATLAB做FFT并不要求数据点个数必须为以2为基数的整数次方.之所以很多资 ...

  2. matlab cftool光滑曲线导出为什么就不光滑了_MATLAB|二维绘图

    0| 前言 数据可视化(data visualization)技术指的是运用计算机图形学和图像处理技术,将数据转换为图形或图像在屏幕上显示出来,并进行交互处理的技术.它涉及计算机图形学.图像处理.计算 ...

  3. matlab cftool光滑曲线导出为什么就不光滑了_【富怡CAD问题答疑】为什么我画的曲线有锯齿状,不光滑...

    ❤ 点击上方蓝字,轻松关注 ❤   具体操作如下: 1.菜单栏--选项--系统设置 2.页面设置--使用光滑曲线这里打钩 3.对照一下,解决! ............................ ...

  4. matlab画简单曲线,并进行标注、图例、加网格,等操作

    原文地址为: 用matlab画简单曲线,并进行标注.图例.加网格,等操作 用matlab画简单曲线,并进行标注.图例.加网格,等操作 工具/原料 matlab 软件 方法/步骤 本人采用的是r2012 ...

  5. python matlab 多条曲线 单位_【基础篇】MATLAB科研制图常用代码命令

    最近更新了不少关于数学建模算法与机器学习的博客,今天我来写写关于科研制图的MATLAB常用命令,众所周知,在未来的科研生涯中,只要是学工科的同学们,MATLAB都是大家必学的工具之一,而发paper中 ...

  6. MATLAB中cftool多曲线画图

    MATLAB中cftool多曲线画图 1, 两组数据 x1=[0,2.95,6,7.0,13.1,15]; x2=[0,3.1,6,7.1,12.9,15]; y1=[410,328,350,365, ...

  7. 用matlab画散点图并用光滑曲线连接(样条插值)

    上接:http://blog.csdn.net/cantjie/article/details/70216642 用matlab画散点图并用光滑曲线连接 %exp10.m clc,clear form ...

  8. 用matlab画散点图并用光滑曲线连接/效率曲线/附代码

    用matlab画散点图并用光滑曲线连接/效率曲线 Excel内容: 代码: %%清屏 clear ; close all; clc; % param1:Excel文件名,无需扩展名 % param2: ...

  9. matlab 取点画图,matlab绘图小技巧-图像光滑数据取点

    原标题:matlab绘图小技巧-图像光滑&数据取点 小助理之前介绍过Matlab,,一款计算机.医学与生物学的软件,今天转载一篇实操,简单易上手~ 用cftool插值绘图得到拟合后的图像,然后 ...

  10. matlab绘制频散曲线,Matlab绘制频散曲线程序代码.docx

    Matlab绘制频散曲线程序代码.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. ...

最新文章

  1. 区分BundleVersion和BundleShortVersionString
  2. (十一)java版spring cloud+spring boot+redis多租户社交电子商务平台- commonservice-sso服务搭建(一)...
  3. SpringBoot阿里巴巴Fastjson的一些常用配置
  4. 【AI2】更新app inventor2离线开发环境AppInventor2021,安卓app图形化开发环境
  5. CentOS安装jdk(无需配置环境变量)
  6. 抢滩“体验经济”,“真快乐”布局娱乐化零售的野心
  7. oracle拼接字符串报错,Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决
  8. 亚马逊s3的使用方法_使用jclouds库在Amazon S3上上传
  9. 很高兴加入 英文_XR车载公司Holoride加入高通XR计划
  10. 【Java】Mybatis mapper动态代理方式
  11. Veeam FAQ系列转载(二)
  12. 论EFMS模拟量部分采集电路的修改
  13. 人人都是产品经理面试题
  14. 科蒂斯控制器故障代码_科蒂斯控制器故障代码大全-CURTIS
  15. 东南大学计算机技术935专业考研经验分享
  16. 广告系统,业务与架构细节
  17. 地图作业平台低代码实战(搭建能力提升)
  18. matlab蒙特卡罗方法求体积_实验二-蒙特卡罗方法计算三维体积
  19. 今日头条推出“悟空问答” 做智能问答分发先驱者
  20. 音频频谱显示-基于fmod设计音乐播放器并动态显示频谱图(二)

热门文章

  1. Vue 实现简单的时间轴 时间进度条
  2. 每页都有的表头和打印分页
  3. Docker学习(二)进阶
  4. 读《混世小农民》有感
  5. HDU6438(优先队列+思维)
  6. 编译原理:flex与bison--从0到1完成一个编译器(sample语言)①
  7. Excel表格如何快速将表格打印在一页纸上
  8. 识别括号或花括号嵌套
  9. linux命令du -sh,du命令_Linux du 命令用法详解:显示每个文件和目录的磁盘使用空间...
  10. 6月15号MOVE PROTOCOL上线测试版,如何参与呢?