第12章MATLAB的学科应用【本章学习目标】●综合运用所学MATLAB程序设计知识,学会针对具体的问题,选择合适的解题方案,灵活掌握利用MATLAB解决实际问题的方法。●了解MATLAB中几个典型的学科工具箱。●熟悉MATLAB在相关学科领域的应用案例。MATLAB有40多个工具箱,大致可分为两类:功能性工具箱:主要用来扩充MATLAB的符号计算功能、图形建模仿真功能、文字处理功能以及与硬件的实时交互功能,能用于多种学科。学科性工具箱:涵盖了控制系统设计与分析、数字信号处理、数字图像处理、金融财务分析、生物遗传过程等许多专业领域,可以利用这些工具箱进行相关领域的科学研究,解决相关领域的实际问题。12.1MATLAB在优化问题中的应用•在日常生活和实际工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。•最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。•最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。12.1.1优化模型与优化工具1.优化模型•优化模型是用数学关系式表示的研究对象的某种本质特征,它有如下3个要素:●决策变量:问题中要确定的未知量,用以表示优化方案。●目标函数:表示所待决策问题期望达到的目标,它是决策变量的函数。●约束条件:指决策变量取值时受到的各种资源条件的限制,通常用含决策变量的等式或不等式表示。2.优化函数MATLAB的优化工具箱(OptimizationToolbox)提供了一组优化函数,在使用这组优化函数时,用户定义的待优化函数作为输入参数传递给这些函数。表12.1优化工具箱中的常用函数函数描述fgoalattain多目标达到问题fminbnd有约束的一元函数最小值求解fmincon多变量有约束非线形函数极小值fminimax最大最小化fminsearch采用Nelder-Mead简单搜寻法求多变量无约束函数极小值fminunc采用基于梯度算法求多变量无约束函数极小值fseminf半无限问题linprog求解线性规划问题quadprog求解二次规划问题fzero标量非线性方程求解lsqlin有约束的线性最小二乘优化lsqcurvefit非线性曲线拟合lsqnonlin非线性最小二乘优化lsqnonneg非负线性最小二乘优化3.优化工具图形用户界面•使用优化工具图形用户界面,可以通过鼠标操作选择优化参数和运行优化。在MATLAB的命令窗口输入“optimtool”命令可以打开优化工具图形用户界面12.1.2应用实例•利用MATLAB的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。使用优化工具箱,先要定义目标函数和约束条件,然后设置优化参数(如算法),最后调用优化工具求解。1.一元函数最小值问题•fminbnd函数用于求解有约束的一元函数最小值问题,其调用格式为[x,fval]=fminbnd(fun,x1,x2,options)•其中,fval为目标函数的最小值,fun为目标函数,解的约束为x1≤x≤x2。【例12.1】对边长为3m的正方形铁板,在4个角剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?•设剪去的正方形的边长为x,则水槽的容积为(3−2x)2x。fminbnd函数用于求最小值,因此将求解水槽最大容积转换为miny=−(3−2x)2x,0x1.5在MATLAB命令窗口输入命令:[x,fval]=fminbnd(@(x)-(3-2*x)^2*x,0,1.5);求解得到:x=0.5000fval=−2.0000•即剪掉的正方形的边长为0.5m时,水槽的容积最大,最大容积为2m3。•此题也可使用优化工具的GUI来求解。2.线性规划研究线性约束条件下线性目标函数的极值问题的数学理论和方法,用线性规划求解的典型问题有运输问题、生产计划问题、配套生产问题、下料和配料问题等。线性规划问题的标准形式为minnRxxf)(s.t.Axb≤Aeqxbeqlbxub≤≤求解线性规划问题使用函数linprog,其调用格式为[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)其中,x是最优解,fval是目标函数的最优值。函数中的各项参数是线性规划问题标准形式中的对应项,x、b、beq、lb、ub是向量,A、Aeq为矩阵,f为目标函数。【例12.2】生产计划问题。某企业在计划期内计划生产甲、乙、丙3种产品。这些产品分别需要在设备A、B上加工,需要消耗材料C、D,按工艺资料规定,单件产品在不同设备上加工及所需要的资源如表12.2所示。已知在计划期内设备的加工能力各为200台时,可供材料分别为360kg、300kg;每生产一件甲、乙、丙3种产品,企业可获得利润分别为40、30、50元,假定市场需求无限制。企业决策者应如何安排生产计划,使企业在计划期内总的利润收入最大?设在计划期内生产这3种产品的产量为x1、x2、x3,用Z表示利润,则有Z=40x1+30x2+50x3。在安排3种产品的计划时,不得超过设备A、B的可用工时,材料消耗总量不得超过材料C、D的供应量,生产的产量不能小于零。企业的目标是要使利润达到最大,这个问题的数学模型为123123123123123123max40305033222445235Zxxxxxxxxxxxxxxxxxx≤200≤200≤360≤300≥0,≥,≥0优化函数linprog是求极小值,因此目标函数转换为:minZ=−40x1−30x2−50x3。表12.2单位产品资源消耗产品资源甲乙丙现有资源设备A312200设备B224200材料C451360材料D235300利润(元/件)4030503.非线性规划•求解非线性规划问题的函数是fmincon,其调用格式为[x,fval]=fmincon(f,x0,A,b,Aeq,beq,lb,ub)•其中,x0是初值,其余参数含义与linprog函数的相同。【例12.3】设有400万元资金,要求4年内使用完,若在一年内使用资金x万元,则可得效益万元(效益不能再使用),当年不用的资金可存入银行,年利率为10%。试制定出资金的使用计划,以使4年效益之和为最大。设变量xi表示第i年所使用的资金数,则有12341121231234max4001.14401.211.14841.3311.211.1532.40,1,2,3,4izxxxxxxxxxxxxxxxi≤≤≤≤≥x(1)定义目标函数functionf=xymb(x)f=-(sqrt(x(1))+sqrt(x(2))+sqrt(x(3))+sqrt(x(4)));(2)主程序youh3.m为x0=[1;1;1;1];A=[1000;1.1100;1.211.110;1.3311.211.11];b=[400;440;484;532.4];[x,fval]=fmincon(@xymb,x0,A,b)*12.2MATLAB在控制系统中的应用•控制系统的分析工具包括控制系统工具箱(ControlSystemToolbox)、系统辨识工具箱(SystemIdentificationToolbox)、模糊逻辑工具箱(FuzzyLogicToolbox)、鲁棒控制工具箱(RobustControlToolbox)、模型预测控制工具箱(ModelPredictiveControlToolbox)、线性矩阵不等式工具箱(LMIControlToolbox)等。12.2.1控制系统工具箱•控制系统工具箱包含了丰富的线性系统分析和设计函数,并以LTI对象为基本数据类型对线性时不变系统进行操作与控制。控制系统工具箱能够完成系统的时域和频域分析。1.系统分析•控制系统的分析包括系统的时域分析、频域分析、稳定性分析及根轨迹分析。命令行方式调用各种函数完成模型分析。2.系统设计•控制系统工具箱支持4种线性模型表述方式:传递函数模型、零极点增益模型、状态空间模型和频域响应数据模型。每一种模型形式都有相应的LTI对象的表达。除了模型数据以外,LTI对象还可以存储离散系统的采样时间、时间延迟、输入输出名称、模型注释等。控制系统工具箱提供了GUI和命令行两种方式进行控制系统的设计。命令行方式调用各种函数建立系统模型表12.3MATLAB常用模型转换函数函数名函数功能函数名函数功能tf建立传递函数模型series模型串联ss建立状态方程模型parallel模型并联zpk建立零极点增益模型feedback反馈连接tfdata获取传递函数模型参数set设置LTI对象属性ssdata获取状态方程模型参数get获取LTI对象属性zpkdata获取零极点增益模型参数SISO(Single-InputSingle-Output)设计器是控制系统工具箱所提供的线性系统设计器,它为用户设计单输入单输出线性控制系统提供了非常友好的图形界面。在SISO设计器中,用户可以同时使用根轨迹图与波特图,通过修改线性系统零点、极点以及增益等传统设计方法进行SISO线性系统设计。在MATLAB命令窗口中输入sisotool命令启动SISO设计器。使用控制系统工具箱中的函数还可以进行各种系统的补偿设计,如LQG(线性二次型设计)、RootLocus(线性系统的根轨迹设计)、Poleplacement(线性系统的极点配置)、Observer-basedregulator(线性系统观测器设计)等12.2.2应用实例【例12.4】图12.2所示为一典型线性反馈控制系统的结构图。已知212251()23ssGsss,2(2)()10ssGss。试利用MATLAB控制系统工具箱求出负反馈结构的时域响应曲线。G1=tf([251],[123]);G2=zpk([0-2],-10,1);Cloop=feedback(G1,G2);%构造闭环系统的传递函数step(Cloop);%求系统的阶跃响应holdon;impulse(Cloop,'r-.');%求系统的冲激响应legend('Step','Impulse','--','r-.');【例12.5】在图12.6所示的控制系统中,Gc(s)是一比例环节。试利用MATLAB控制系统工具箱求取系统临界稳定的开环增益值K。(1)建立系统模型,然后启动SISO设计器。在MATLAB命令窗口输入以下命令:Gp=tf(1,[17100]);sisotoolSISO设计器通过零极点配置、根轨迹分析、系统波特图分析等传统的方法对线性系统进行设计。(2)导入系统数据。(3)求临界稳定增益。*12.3MATLAB在信号处理中的应用12.3.1信号处理工具箱与Simulink模块集•在MATLAB中,与信号处理有关的组件包括信号处理工具箱(SignalProcessingToolbox)、神经网络工具箱(NeuralNetworkToolbox)、小波分析工具箱(WaveletToolbox)、统计工具箱(StatisticsToolbox)、通信工具箱(CommunicationsToolbox)、图像处理工具箱(ImageProcessingToolbox)等以及Simulink中的各种信号处理模块。1.信号处理工具箱•信号处理工具箱是一个信号处理的工业级标准算法集合,利用它可以完成数字或模拟系统中常规的信号处理任务。例如,信号生成、信号重采样、各种积分变换、模拟/数字滤波器的设计和分析、频谱分析、随机信号分析、参数模型分析、线性预测等。信号处理工具箱提供的函数包括以下几类。(1)产生基本信号的函数。例如,方波函数square、锯齿波函数sawtooth、矩形脉冲函数tectpuls、三角脉冲函数tripuls、高斯调制正弦波脉冲函数gauspuls、扫频余弦信号函数chrip等。这些基本信号是信号处理的基础。(