MATLAB编程进阶
——主讲人:陈景生
数学建模协会本次活动是由数学科学学院统计专业的陈景生学长为大家讲解MATLAB编程进阶。讲课内容分为三个部分,第一部分是对先锋小队部分试题的讲解,第二部分是对SIMULINK仿真的讲解,第三部分是对论文格式的讲解。
陈景生学长讲课照片
先锋小队试题讲解
1.基础题
(1)数值计算:某矿工身陷在有三个门的矿井之中,经第一个门的通道行进两小时后,他将到达安全地。经第二个门的通道前进三小时后,他将回到原地。经第三个门的通道前进五个小时后,他还是回到原地。假定这个矿工每次都等可能地选取任意一个门,问:直到他到达安全地所需时间的数学期望是多少?
N=10000; % N 表示试验的次数
time=[2,3,5]; % time 记录矿工打开三个门之后行进的时间
for i=1:N % i 表示当前是第i次试验
T(i)=0; % T(i) 用来记录第i次试验中,矿工到达安全地的过程中所
花费的时间
index=0; % index=0 表示该矿工还未到达安全地
k=1; % k 记录矿工当前是第几次选择门
while index<1
X(k)=ceil(3*rand()); % X(k) 记录该矿工第k次选择的是哪个门
T(i)=T(i)+time(X(k));
i X(k)==1 % X(k)==1 表示该矿工选择的是第一个门
index=1; % index=1 表示该矿工当前能够到达安全地
else % 若选择第二或第三个门,则会返回原地
k=k+1; % k=k+1 意味着还要再选一次门
ET=mean(T) % ET 是矿工到达安全门平均需要花费的时间
运行结果:ET = 9.8965
理论值为10小时,仿真结果在10h左右均算正确,给分区间[9,11]。
2)绘图:描绘出函数,和在内的曲线图,并且描绘出动态轨迹。(需给出程序及运行结果,结果只需展示某一时刻的情形即可)
ezplot3('sin(s)','cos(s)','s',[0 10*pi],'animate')
运行结果:
2. 进阶题
一列火车从A站开往B站,该火车从A站到B站的运行时间服从均值为30min,标准差为2min的正态分布。火车在B站只停留2min即离开。已知火车离开A站的时刻及概率如下表所示:
现有一人每天从家赶往B站乘坐火车,此人到达B站的时刻及概率如下表所示:
问此人能在B站赶上火车的概率有多大?
方法一:
clc;%清除命令窗口的内容,对工作环境中的全部变量无任何影响
close all;%关闭打开的窗口
clear all;%清除操作界面及变量
n=0;%计数,初始值为0
m=0;%计数,初始值为0
while n
r1=rand();%产生服从[0,1]均匀分布的随机数,将其赋值给r1
r2=rand();%产生服从[0,1]均匀分布的随机数,将其赋值给r1
if r1<=(1/50)*(u^2)*sin(2^u)+(1/2)
m=m+1;%满足成功赶上火车条件,次数加1
P=400*P1-200%计算此人能在B站赶上火车的概率
根据上述程序估算的此人能在B站赶上火车的概率为:P = 0.6032
注:仿真结果在0.6左右均算正确,给分区间[0.5,0.7]。
方法二:
p1=[0.7 0.9 1] ;
A=[0 5 10] ;
B=[30 32 34 36] ;
R1=rand() ;
if R1<=p1 (i)
先锋小队MATLAB编程题讲解
R2=rand() ;
if R2<=p2(j)
r1=rand() ;
r2=rand() ;
N=sqrt(-2*log(r1) ) *sin (2*pi*r2) ;
SIMULINK交互式仿真集成环境
SIMULINK是一个进行动态系统建模、仿真和综合分析的集成软件包。它可以处理的系统包括:线性、非线性系统;离散、连续及混合系统;单任务、多任务离散事件系统。
在SIMULINK 提供的图形用户界面GUI上,只要进行鼠标的简单拖拉操作就可构造出复杂的仿真模型。它外表以方块图形式呈现,且采用分层结构。从建模角度讲,这既适于自上而下(Top-down)的设计流程(概念、功能、系统、子系统、直至器件),又适于自下而上(Bottum-up) 逆程设计。从分析研究角度讲,这种SIMULINK模型不仅能让用户知道具体环节的动态细节,而且能让用户清晰地了解各器件、各子系统、各系统间的信息
交换,掌握各部分之间的交互影响。
MATLAB工具包
工具包包括拥有数百个内部函数的主包和三十几种工具包。工具包又可以分为功能性工具包和学科工具包。
除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。
Matlab Main Toolbox——matlab主工具箱
Control System Toolbox——控制系统工具箱
Communication Toolbox——通讯工具箱
Financial Toolbox——财政金融工具箱
System Identification Toolbox——系统辨识工具箱
Fuzzy Logic Toolbox——模糊逻辑工具箱
Higher-Order Spectral Analysis Toolbox——高阶谱 分析工具箱
Image Processing Toolbox——图象处理工具箱
LMI Control Toolbox——线性矩阵不等式工具箱
MATLAB进阶讲解
Model predictive Control Toolbox——模型预测控制工具箱
μ-Analysis and Synthesis Toolbox——μ分析工具箱
Neural Network Toolbox——神经网络工具箱
Optimization Toolbox——优化工具箱
Partial Differential Toolbox——偏微分方程工具箱
Robust Control Toolbox——鲁棒控制工具箱
Signal Processing Toolbox——信号处理工具箱
Spline Toolbox——样条工具箱
Statistics Toolbox——统计工具箱
Symbolic Math Toolbox——符号数学工具箱
Simulink Toolbox——动态仿真工具箱Wavele Toolbox——小波工具箱
第一步,在MATLAB的命令窗运行指令simulink,或点击命令窗中的图标,就可以打开如图所示的SIMULINK模块库浏览器。
第二步,点击Source子库,便可看到各种信源模块。
第三步,点击“新建”图标,打开一个名为untitled的空白模型窗口。
第四步,用鼠标指向所需的信源模块(如正弦波信源Sine Wave),按下
鼠标左键,把它拖至untitled窗,就生成一个正弦波信源复制品。
第五步,采用上述类似方法,将信宿库Sinks中的示波器Scope拷贝到模型窗。
第六步,把鼠标指向信源右侧的输出端,当光标变为十字符时,按住鼠标任一键,移向示波器的输入端,松开鼠标键,就完成两个模块间的信号线连接。
第七步,点击模型窗中“仿真启动”图标,仿真开始。在示波器显示屏上,可看到黄色的正弦波形。再点击显示屏上的“自动刻度”按钮,使得波形充满整个坐标框。
SIMULINK库浏览器界面
SIMULINK模型窗的组成 模型窗的组成
单击按钮可切换双窗口形式。整个模型窗的组成是:
菜单栏、工具条、编辑框和状态栏。
希望大家多看国赛的获奖论文,学习其长处和格式,集百家之长。写出优秀的论文是建模比赛中必不可少的一环。
封面图片来自网络,侵删
排版/文字编辑:李圣杰/董浩瀚
审核:张瓯