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

流程简述

在长期编写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 命名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值