文章目录

  • 流程简述
  • 代码结构
    • 1.第一部分:加载数据
    • 2.第二部分:仿真计算
    • 3.第三部分:绘图
  • 命名规则

流程简述

在长期编写matlab代码中总结出得经验:通过一个合理的流程来写MATLAB代码,设计代码结构,能对后续的调试和修改提供极大便利。

流程可以总结如下:
1.获取数据,存为mat文件
2.编写整体仿真计算代码(期间,将可独立出来的计算单元写成函数);
3.存储仿真结果;
4.绘图;
5.修改图的样式、坐标、标签等;

代码结构

MATLAB都是用m文件存储脚本代码和函数代码,下面介绍的就是一整个仿真出图所涉及的代码结构。注意,整个项目可能涉及多个m文件实现的多个仿真出图,所以要考虑函数重用性、易用性,数据的一致性。

一般实现一次仿真的m文件可分为如下几个部分。每一部分在代码中用%%分割成小节,以便可以单独调试每一个节。

1.第一部分:加载数据

仿真的数据不仅包括和仿真直接相关的输入参数,还包括颜色表,字体设置等与图表样式有关的数据。

%%---------------------------

  • 清空: clearclc
  • 不会改动的数据用mat文件存储,使用load xxx.mat 加载;
  • 需要更改调试,但在整个项目需要保持一致的代码,使用单独m文件写成脚本并加载;

%-----------------------------

  • 仅用在本文件的参数,或者对加载的数据进行改动,在此直接定义或赋值。

2.第二部分:仿真计算

%%---------------------------

  • 考虑仿真可能可以分为多个独立步骤,需要提前想清楚,考虑每个步骤的输入和输出;
  • 根据仿真的步骤,将不同步骤的代码块用空行或注释分开,足够清晰;
  • 记录实时生成的结果数据,一般包括作图的x和y轴数据、图例文本等,用数组或元胞数组存储。;
  • 将可以为其他算法使用的独立单元写成函数(也是为了代码提高可读性);

%-----------------------------

  • 保存结果数据

提示

  • 保存数据用save指令,这样下次打开m文件可以直接加载上次的结果,用来绘图;

  • sprintf自动生成参数变化的图例文本。
    gtxt(i)=sprintf(“I=%d A”, current(i))

  • 函数的调用如参数过多,调用的时候保持参数名一致,或者用结构体等方法。

3.第三部分:绘图

%%----------------------------

  • 加载结果数据;

%------------------------------

  • 创建绘图框,获取句柄 fig1=figure
  • 打开网格 grid on,打开保持 hold on

%----------------------------

  • 设置x轴标签、坐标范围/坐标刻度

%----------------------------

  • 根据y轴左右侧区分,分别画:
  • plot, semilogx, semilogy 等绘图;
  • 设置标签、坐标范围/坐标刻度、网格

%----------------------------

  • 设置图例

%----------------------------

  • (可选)去除边缘的空白部分 set(fig1.CurrentAxes,'looseInset',[0 0.1 0 0]) %去白边
  • 统一设置字体字号 set(fig1.CurrentAxes,'FontName',ftname,'FontSize',ftsize)
  • 关闭保持hold off

提示

  • yyaxis right/left 指定下面操作的坐标轴是左侧还是右侧;

  • 如果图中需要添加箭头、文本框,可以先用图表编辑工具直接在图上绘制,然后生成代码,生成的代码是一个函数,将其中自己需要的部分复制到自己代码后面即可。

  • 生成图例与图中曲线对应:

gtxt(1)=sprintf( “R=%d”, resistor(1) )
...
gc(1)=plot(x{1},y{1})
...
legend([gc(1),gc(2),gc(3)],gtxt{1},gtxt{2},gtxt{3}, 'Location','Northwest')

命名规则

简单的变量用小写,其他用小驼峰命名法(如 colorListForLine);
绘图的代码文件用 Curve_xxxx.m 命名;
设置全局参数的文件用 Load_xxxx.m 命名;
计算某个值的函数文件用 Calc_xxxx.m 命名;
隐函数表达式的文件用 Fun_xxxx.m 命名 ;
原始数据的文件用 Source_xxxx.m 命名;
结果数据的文件用 Result_xxxx.m命名;
其他数据的文件用Data_xxxx.m 命名。

MATLAB仿真作图的流程与代码结构-经验总结相关推荐

  1. 【Go API 开发实战 3】API 流程和代码结构

    API 流程和代码结构 为了使读者在开始实战之前对 API 开发有个整体的了解,这里选择了两个流程来介绍: HTTP API 服务器启动流程 HTTP 请求处理流程 本小节也提前给出了程序代码结构图, ...

  2. PyQt5 作图之 pyqtgraph PlotWidget 代码结构拆解

    关于 pyqtgraph 的介绍,网上一堆文章,但是涉及到其代码,尤其是 PlotWidget 应用的代码,要么附带的数据过于复杂不好摘,要么代码结构略复杂,对于刚接触的萌新很不友好,因此在这里自己拆 ...

  3. GO语言03(Restful API,API流程以及代码结构)

    目录 Restful API 1. 什么是 API 2. REST 简介 3.RESTful RUI的设计 4. RPC 简介 API 流程 1. HTTP API 服务器启动流程 2. HTTP 请 ...

  4. matlab仿真雷达方程,雷达方程分析(示例代码)

    雷达方程分析 雷达方程是设计雷达系统的基础.雷达方程如下: 一般情况,雷达系统设计已知雷达需要探测距离R,所以雷达方程常进行变换应用,例如根据<雷达系统设计MATLAB仿真>中的: 其中, ...

  5. API流程和代码结构

    一.HTTP API 服务器启动流程 1. 在启动一个 API 命令后,API 命令会首先加载配置文件,根据配置做后面的处理工作. 2. 通常会将日志相关的配置记录在配置文件中,在解析完配置文件后,就 ...

  6. 格子玻尔兹曼在多孔介质孔隙尺度气泡输运调控中的应用和MATLAB仿真『需要数据和代码请先私信』

    引言 格子玻尔兹曼方法(Lattice Boltzmann Method, LBM)是一种基于介观(mesoscopic)模拟尺度的计算流体力学方法.该方法相比于其他传统CFD计算方法,具有介于微观分 ...

  7. 单目标测向系统中CRLB推导及Matlab仿真验证

    目录 1. 根据正弦信号参数估计确定单目标测向系统中的CRLB 1.1 实数正弦信号参数估计问题 1.2 复正弦信号参数估计问题 1.3 利用上述结论计算传统单目标测向系统的CRLB 2. 根据阵列测 ...

  8. 滑模变结构控制matlab仿真 程序,滑模变结构控制MATLAB仿真 程序代码

    [实例简介] 滑模变结构控制MATLAB仿真 程序代码,值得借鉴 [实例截图] [核心代码] 滑模变结构控制MATLAB仿真 └── 滑模变结构控制MATLAB仿真 ├── 43188036Slidi ...

  9. 【MATLAB】流程控制 ( 循环结构 | for 循环 | while 循环 | 分支结构 | if end 分支结构 | if else end 分支结构 | switch case 分支结构 )

    文章目录 一.MATLAB 流程控制结构 二.for 循环 1.for 循环 2.嵌套 for 循环 三.while 循环 二.分支结构 1.if end 分支结构 2.if else end 分支结 ...

最新文章

  1. MySQL开启远程连接权限
  2. Eigen库使用之矩阵的最大/小值及其位置
  3. 如何让网站用上HTML5 Manifest
  4. C++中类的多态与虚函数的使用
  5. android:Activity启动模式
  6. Java中如何利用gson解析数据
  7. 代码拾取图片某一点的颜色_RPG游戏开发日志7:道具拾取与存放
  8. Oracle快速备份表数据
  9. MapReduce任务学习系列
  10. python 股票 因子分析_因子分析1.-Python数据科学技术详解与商业项目实战精讲 - Python学习网...
  11. svn服务端安装、迁移教程、Eclipse切换svn连接库
  12. 2017年全国计算机软件水平考试报名时间和报名入口网址
  13. mysql 缺省date值_关于MySQL中date类型缺省值
  14. 斐波那契数列(各种代码实现斐波那契数列)
  15. 用只读打开服务器上的文档,打开WebDAV文档在MS Office中以IT只读方式打开WebDAV服务器...
  16. linux 查看显卡信息及显卡驱动信息
  17. 串口DCB定义,配置例程
  18. 小白安装cadence virtuoso
  19. 地面互动的原理以及特殊优势
  20. java 中 webcam类_如何在Java的Swing应用程序中集成Webcam?

热门文章

  1. python求三个数的最大值编程_python 判断三个数字中的最大值实例代码
  2. 阿里巴巴2008年创纪录狂招2000多销售人才
  3. 了解怎么翻译音频吗?
  4. 前端实习周记1---环境配置、静态页面、作品呈现页
  5. 按键短按长按连发双击
  6. mac 无法识别seagate硬盘、无法向其写入文件
  7. octomap, slam, 路径规划: 如何协同工作?
  8. 最小二乘法拟合三维直线
  9. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zyh.springboot.
  10. 关于osg中的primitiveset