【仿真基本功】【MATLAB】仿真常用通用代码(按需更新)

日常科研常需使用MATLAB,但每次写程序前都要重新回顾基本设置。为了方便日常使用,避免在基础设置的查询和测试上浪费时间,特将本人常用的设置列在下面,并逐一说明用途。这些设置主要是为较大规模的仿真提供方便,欢迎各位在评论区补充或评论~ 后续也会根据本人经验和各位的评论,在本博客中持续更新补充~

一、程序开头

1. 清空

close all % 关掉当前打开的所有figure文件
clear, clc % 清空工作区中的所有变量,清空命令行窗口

2. 日期、时间获取

% 获取当前日期,格式为:2021.03.17
date = datestr(datetime, 'yyyy.mm.dd');
% 获取当前时间,格式为:11-14-50
time = datestr(datetime, 'HH-MM-ss');

注:上述格式也可以自行设置,只需修改引号中的格式,如

% 获取当前日期,格式为:2021/03/17
date = datestr(datetime, 'yyyy/mm/dd');
% 获取当前时间,格式为:11:14:50
time = datestr(datetime, 'HH:MM:ss');

但需要注意的是某些符号不能出现在windows系统的文件名中,如“/”,“:”等。

3. 新建文件夹

% 给出文件名(完整路径)
folderName = ['D:/simulation results/', date, ' ', time, ' hello/'];
% 新建该文件夹
[ ~, ~ ] = mkdir(folderName); % 这里使用“~”的原因是不关心相应输出变量

注1:上述文件名处也可以使用相对路径。此时,新建的文件夹位于MATLAB的当前路径下。由于运行位于不同路径的MATLAB脚本可能改变MATLAB的当前路径,进而造成新建文件夹的路径不稳定,因此个人推荐使用完整路径。
注2:((待完善) 文件夹已存在的提示)。更多具体内容请参考mkdir的官方说明。使用命令 help mkdir查看帮助或使用命令doc mkdir查看mkdir函数的脚本文件。

二、程序主体

1. 绘图的基本代码(含基本参数设置)

flag_fig = 1;  % 值为1时绘图,值为0时不绘图
flag_subfig = [1, 0];  % 值为1时绘制对应子图,值为0时不绘制
flag_rePosition = 1;  % 单次大量绘图时有用
% 第一次绘图仿真时设置为1,可以根据后面的参数设置自动设置figure位置和大小,此时只需手动调整各图在屏幕上的位置;
% 待手动调整好位置后,把该值设置为0,再次绘图时将直接在各个原figure上修改,而不会修改figure的大小和位置

for fig = 1: flag_fig
% 1. 便于折叠,代码查阅方便
% 2. 不会出现使用if语句时容易出现的“无法到达此语句(以及后面的后续语句)”的警告

	fig_no = 0;  % 方便编号,想避免覆盖已有figure时在此修改即可

	LineWidth = 1.5;  % 曲线宽度:默认值太细,看不清
	Marker = 'oxsv^+*<>';  % 曲线记号
	MarkerSize = 12;  % 记号大小
	CurveType = {'-', '-.', '--', ':'};  % 曲线类型:实线、点划线、虚线、细密虚线
	Position = [100, 100, 350, 250];  % figure位置及大小,避免总得手动调整大小
	CLR = [ 0.00 , 0.45 , 0.74 ;... 1 Blue
	        0.85 , 0.33 , 0.10 ;... 2 Orange-Red
	        0.93 , 0.68 , 0.13 ;... 3 Yellow
	        0.49 , 0.18 , 0.56 ;... 4 Purple
	        0.47 , 0.67 , 0.19 ;... 5 Green
	        0.64 , 0.08 , 0.18 ;... 6 Claret
	        0.30 , 0.75 , 0.93 ]; % 7 Azure
	
	for fig1 = 1:flag_subfig(1)  % 子图1
		fig_no = fig_no + 1;
		figure(fig_no)
		legend_list = cell(3, 1);
		
		x_axis = 1:5;  % 统一横坐标,便于修改
		plot(x_axis , y_axis_1, '-^', 'Color', CLR(1, :), 'LineWidth', LineWidth, 'MarkerSize', MarkerSize)
		legend_list{1} = "legend $1$";  % 使用这种方法设置图例,可以方便增删曲线时图例的跟随修改
		hold on  % 为了再次绘图时能够覆盖原结果,此句需像这样放在第一条曲线的绘制之后
		plot(x_axis, y_axis_2, '-o', 'Color', CLR(2, :), 'LineWidth', LineWidth, 'MarkerSize', MarkerSize)
		legend_list{2} = "legend $2$";
		plot(x_axis , y_axis_3, '--s', 'Color', CLR(3, :), 'LineWidth', LineWidth, 'MarkerSize', MarkerSize)
		legend_list{3} = "legend $3$";
		
		hold off
		grid on  % 增加网格线,便于从图上粗略读数
		legend(legend_list, 'Interpreter', 'latex', 'Location', 'best')
		xlabel('$X$ axis', 'Interpreter', 'latex')  % 设置X轴标签(名称)
		ylabel('$Y$ axis', 'Interpreter', 'latex')  % 设置Y轴标签(名称)
		set(gca, 'FontSize', 14)  % 设置字体大小
		set(gca, 'XTick', x_axis , 'XTickLabel', [24, 8, 16, 32])  % 设置X轴刻度上的标签
		set(gca, 'YTick', 1:2:5, 'YTickLabel', {'10^{1}', '10^{3}', '10^{5}'})  % 设置Y轴刻度上的标签
		for rePos = 1:flag_rePosition, set(gcf, 'Position', Position), end  % set开头的这句命令用于设置当前正在绘制的figure的大小和位置
		axis([x_axis(1), x_axis(end), -Inf ,Inf])  % 设置坐标轴范围,Y轴范围可根据实际情况调节
	end

	for fig1 = 1:flag_subfig(2)  % 子图2
		fig_no = fig_no + 1;
		figure(fig_no)
		... % 类似子图1
	end
end

三、程序结束

1. 播放音乐以提示程序结束

musicPath = 'C:/Users/AbaloneVH/练声曲.mp3'; % 音乐文件路径

% 读取音乐文件信息,y为音乐幅度序列,Fs为音乐频率
[ y, Fs ] = audioread( musicPath );
sound( y, Fs ) % 播放音乐文件

注:MATLAB播放音乐没有显式界面,除非关闭MATLAB,否则在音乐文件播放完之前不会停止。为了提前终止音乐播放,可以使用下面的命令

clear sound

2. 程序结束后自动给自己发邮件

有时仿真需要的时间太长,坐等不值当,离开太久又怕耽误仿真进度。此时,一种可以选择的方案就是让程序在结束后自动给自己发送邮件,这样即使自己离开,也可以随时了解仿真进度。

具体需要一个完整函数,且涉及诸多问题。各位请参见本人的下面这篇博客:
如何在MATLAB程序结束时自动给自己发邮件(附“身份验证失败”/“Authentication failed”的解决方案)

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
matlab仿真设计是一种利用matlab软件进行建模和模拟的设计方法。它可以在计算机上进行各种系统的仿真,帮助工程师在设计过程中评估和优化系统性能。 首先,matlab仿真设计提供了丰富的建模工具和函数库,可以快速构建复杂系统的数学模型。用户可以利用这些工具,将系统的物理特性和控制算法等抽象成数学表达式,建立仿真模型。同时,matlab还具有高度灵活的编程功能,用户可以根据要自定义函数和脚本,实现更复杂的仿真和分析。 其次,matlab仿真设计可以模拟不同环境下系统的运行情况。用户可以根据实际求设定不同的输入,例如电路中的电压信号、机械系统的负载力等,通过仿真模型进行计算和分析,得到相应的输出结果。这样,工程师可以在实际构建系统之前,通过仿真模型评估系统的性能,及时调整设计方案,降低开发成本和风险。 第三,matlab仿真设计可以进行参数敏感性分析和优化。通过改变模型中的参数值,用户可以观察系统响应的变化,找到对系统性能影响最大的参数。然后,利用matlab中的优化算法,用户可以进一步寻找最佳参数配置,使系统达到最佳性能。这对于要优化设计的工程师来说非常有价值,可以提高系统性能并节省资源。 综上所述,matlab仿真设计提供了一种快速、灵活和高效的设计方法,可用于各种系统的建模、仿真和优化。它不仅可以帮助工程师更好地理解系统的行为和性能,还可以加快产品开发过程,降低开发成本,提高设计质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值