MATLAB仿真作图的流程与代码结构-经验总结
文章目录
- 流程简述
- 代码结构
- 1.第一部分:加载数据
- 2.第二部分:仿真计算
- 3.第三部分:绘图
- 命名规则
流程简述
在长期编写matlab代码中总结出得经验:通过一个合理的流程来写MATLAB代码,设计代码结构,能对后续的调试和修改提供极大便利。
流程可以总结如下:
1.获取数据,存为mat文件
;
2.编写整体仿真计算代码(期间,将可独立出来的计算单元写成函数);
3.存储仿真结果;
4.绘图;
5.修改图的样式、坐标、标签等;
代码结构
MATLAB都是用m文件
存储脚本代码和函数代码,下面介绍的就是一整个仿真出图所涉及的代码结构。注意,整个项目可能涉及多个m文件
实现的多个仿真出图,所以要考虑函数重用性、易用性,数据的一致性。
一般实现一次仿真的m文件
可分为如下几个部分。每一部分在代码中用%%分割成小节,以便可以单独调试每一个节。
1.第一部分:加载数据
仿真的数据不仅包括和仿真直接相关的输入参数,还包括颜色表,字体设置等与图表样式有关的数据。
%%---------------------------
- 清空:
clear
和clc
- 不会改动的数据用
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仿真作图的流程与代码结构-经验总结相关推荐
- 【Go API 开发实战 3】API 流程和代码结构
API 流程和代码结构 为了使读者在开始实战之前对 API 开发有个整体的了解,这里选择了两个流程来介绍: HTTP API 服务器启动流程 HTTP 请求处理流程 本小节也提前给出了程序代码结构图, ...
- PyQt5 作图之 pyqtgraph PlotWidget 代码结构拆解
关于 pyqtgraph 的介绍,网上一堆文章,但是涉及到其代码,尤其是 PlotWidget 应用的代码,要么附带的数据过于复杂不好摘,要么代码结构略复杂,对于刚接触的萌新很不友好,因此在这里自己拆 ...
- GO语言03(Restful API,API流程以及代码结构)
目录 Restful API 1. 什么是 API 2. REST 简介 3.RESTful RUI的设计 4. RPC 简介 API 流程 1. HTTP API 服务器启动流程 2. HTTP 请 ...
- matlab仿真雷达方程,雷达方程分析(示例代码)
雷达方程分析 雷达方程是设计雷达系统的基础.雷达方程如下: 一般情况,雷达系统设计已知雷达需要探测距离R,所以雷达方程常进行变换应用,例如根据<雷达系统设计MATLAB仿真>中的: 其中, ...
- API流程和代码结构
一.HTTP API 服务器启动流程 1. 在启动一个 API 命令后,API 命令会首先加载配置文件,根据配置做后面的处理工作. 2. 通常会将日志相关的配置记录在配置文件中,在解析完配置文件后,就 ...
- 格子玻尔兹曼在多孔介质孔隙尺度气泡输运调控中的应用和MATLAB仿真『需要数据和代码请先私信』
引言 格子玻尔兹曼方法(Lattice Boltzmann Method, LBM)是一种基于介观(mesoscopic)模拟尺度的计算流体力学方法.该方法相比于其他传统CFD计算方法,具有介于微观分 ...
- 单目标测向系统中CRLB推导及Matlab仿真验证
目录 1. 根据正弦信号参数估计确定单目标测向系统中的CRLB 1.1 实数正弦信号参数估计问题 1.2 复正弦信号参数估计问题 1.3 利用上述结论计算传统单目标测向系统的CRLB 2. 根据阵列测 ...
- 滑模变结构控制matlab仿真 程序,滑模变结构控制MATLAB仿真 程序代码
[实例简介] 滑模变结构控制MATLAB仿真 程序代码,值得借鉴 [实例截图] [核心代码] 滑模变结构控制MATLAB仿真 └── 滑模变结构控制MATLAB仿真 ├── 43188036Slidi ...
- 【MATLAB】流程控制 ( 循环结构 | for 循环 | while 循环 | 分支结构 | if end 分支结构 | if else end 分支结构 | switch case 分支结构 )
文章目录 一.MATLAB 流程控制结构 二.for 循环 1.for 循环 2.嵌套 for 循环 三.while 循环 二.分支结构 1.if end 分支结构 2.if else end 分支结 ...
最新文章
- MySQL开启远程连接权限
- Eigen库使用之矩阵的最大/小值及其位置
- 如何让网站用上HTML5 Manifest
- C++中类的多态与虚函数的使用
- android:Activity启动模式
- Java中如何利用gson解析数据
- 代码拾取图片某一点的颜色_RPG游戏开发日志7:道具拾取与存放
- Oracle快速备份表数据
- MapReduce任务学习系列
- python 股票 因子分析_因子分析1.-Python数据科学技术详解与商业项目实战精讲 - Python学习网...
- svn服务端安装、迁移教程、Eclipse切换svn连接库
- 2017年全国计算机软件水平考试报名时间和报名入口网址
- mysql 缺省date值_关于MySQL中date类型缺省值
- 斐波那契数列(各种代码实现斐波那契数列)
- 用只读打开服务器上的文档,打开WebDAV文档在MS Office中以IT只读方式打开WebDAV服务器...
- linux 查看显卡信息及显卡驱动信息
- 串口DCB定义,配置例程
- 小白安装cadence virtuoso
- 地面互动的原理以及特殊优势
- java 中 webcam类_如何在Java的Swing应用程序中集成Webcam?
热门文章
- python求三个数的最大值编程_python 判断三个数字中的最大值实例代码
- 阿里巴巴2008年创纪录狂招2000多销售人才
- 了解怎么翻译音频吗?
- 前端实习周记1---环境配置、静态页面、作品呈现页
- 按键短按长按连发双击
- mac 无法识别seagate硬盘、无法向其写入文件
- octomap, slam, 路径规划: 如何协同工作?
- 最小二乘法拟合三维直线
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zyh.springboot.
- 关于osg中的primitiveset