matlab第八章
- 格式:doc
- 大小:274.50 KB
- 文档页数:9
第8章MATLAB高级应用8.1 MATLAB应用接口MATLAB是一个看似封闭的系统,但具有多种接口功能,有外部数据接口和应用程序接口,用户可以十分方便地与其它应用程序交换数据和信息。
比如,MATLAB可以与C和FORTRAN程序相互调用,从而充分发挥MATLAB数值计算的长处,而避开其运行速度慢的短处。
8.1.1 MEX文件MEX就是MATLAB Executable的缩写,即MATLAB可执行程序。
MEX文件是由C 或FORTRAN程序编译生成的,也可以由M文件经由C源代码生成。
MEX文件在Windows 系统是扩展名为DLL的动态链接库,类似于MATLAB的内部函数,在M文件中可以直接调用。
MEX文件具有以下几个方面的应用:(1) 对于已存在的C或FORTRAN子程序,可以通过MEX文件在MATLAB环境中直接调用,而不必重新编写M文件。
(2) 由于MATLAB是解释性语言,运行如for等循环体时,会出现速度十分缓慢的现象,为了能提高速度,往往要使用MEX程序。
(3) 对于A/D、D/A卡,或其它PC硬件,可以直接用MEX文件进行访问。
(4) 利用MEX文件,可以使用如Windows用户图形界面等资源。
由于MATLAB是用C语言编写的,有很多科学计算子程序又来自FORTRAN程序库,因此在MATLAB中,通过调用用户自己开发的C或FORTRAN程序,由编译器编译成动态链接函数,执行速度和C或FORTRAN程序相同,就可以达到提高计算效率的目的。
在MATLAB中,如果有同名的文件则调用的顺序是先执行MEX文件,其次是DLL文件,最后才是M文件,而help命令则会只处理.m文件。
1. MEX文件系统设置MEX文件的编写与编译需要两个条件:已经安装的MATLAB应用程序组件及相应的工具和合适的C或Fortran语言编译器。
MATLAB本身包含了C语言编译器Lcc,但不包含Fortran编译器。
第8章MATLAB方程数值求解例8-1用直接解法求解下列线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';x=A\b例8-2用LU分解求解例8-1中的线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';[L,U]=lu(A);x=U\(L\b)例8-3 用QR分解求解例8-1中的线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';[Q,R]=qr(A);x=R\(Q\b)例8-4 用Cholesky分解求解例8-1中的线性方程组。
命令如下:>> A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; >> b=[13,-9,6,0]';>> R=chol(A)Jacobi迭代法的MA TLAB函数文件jacobi.m如下:function [y,n]=jacobi(A,b,x0,ep)if nargin==3ep=1.0e-6;elseif nargin<3errorreturnendD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵U=-triu(A,1); %求A的上三角阵B=D\(L+U);f=D\b;y=B*x0+f;n=1; %迭代次数while norm(y-x0)>=epx0=y;y=B*x0+f;n=n+1;end例8-5 用Jacobi迭代法求解下列线性方程组。
设迭代初值为0,迭代精度为10-6。
在程序中调用函数文件jacobi.m,程序如下:A=[10,-1,0;-1,10,-2;0,-2,10];b=[9,7,6]';[x,n]=jacobi(A,b,[0,0,0]',1.0e-6)Gauss-Serdel迭代法的MA TLAB函数文件gauseidel.m如下:function [y,n]=gauseidel(A,b,x0,ep)if nargin==3ep=1.0e-6;elseif nargin<3errorreturnendD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵U=-triu(A,1); %求A的上三角阵G=(D-L)\U;f=(D-L)\b;y=G*x0+f;n=1; %迭代次数while norm(y-x0)>=epx0=y;y=G*x0+f;n=n+1;end例8-6 用Gauss-Serdel迭代法求解例8-5中的线性方程组。
第八章SIMULINK交互式仿真集成环境8.1引导8.1.1使用入门8.1.2SIMULINK模型窗的组成图8.1-8 展现浏览器的模型窗〖说明〗工具条:最左边9个图标实现标准的Windows操作。
其余图标含义如下:打开库浏览器模型浏览器单双窗外形切换展现当前系统的父系统打开调试器仿真的启动或继续暂停(在仿真执行过程中出现)结束仿真显示库连接观察封装子系统8.1.3 模型的创建模型概念和文件操作(1)SIMULINK模型是什么SIMULINK模型包含4层含义:1)在视觉上是一组方框图;2)在文件上为扩展名为MDL的ASCII代码;3)在数学上表现为一组微分方程或差分方程;4)在行为上模拟物理器件构成的实际系统的动态特性。
(2)模型文件的操作1)新建模型2)打开模型3)存盘4)输出模型文件(3)模块操作(4)信号线操作(5)产生连线(6)信号线的分支和折曲(7)插入模块(8)信号线标识(label )(9)对模型的注释8.2 常用的Sourse 库信号源【例8.2-1】如何调用MATLAB 工作空间中的信号矩阵作为模型输入。
本例所需的输入为⎪⎩⎪⎨⎧<≤<≤-=elseT t T T t t T t t u 200)2()(22。
(1)编写一个产生信号矩阵的M 函数文件function TU=source82_1(T0,N0,K) t=linspace(0,K*T0,K*N0+1);% t=linespace(a,b,n) 等于 t=a:( b-a)/( n-1): b N=length(t);u1=t(1:(N0+1)).^2;u2=(t((N0+2):(2*N0+1))-2*T0).^2; u3(1:(N-(2*N0+2)+1))=0; u=[u1,u2,u3]; TU=[t',u'];(2)构造简单的接收信号用的实验模型图8.2-8 接收信号用的实验模型(3)模块的参数设置(4)在指令窗中,运行以下指令,在MATLAB 工作空间中产生TU 信号矩阵。
MATLAB教程第8章MATLAB数值积分与微分1.数值积分数值积分是计算函数的定积分值的近似方法。
在MATLAB中,有几个函数可以帮助我们进行数值积分。
(1) quad函数quad函数是MATLAB中用于计算一维定积分的常用函数。
它的语法如下:I = quad(fun, a, b)其中,fun是被积函数的句柄,a和b分别是积分区间的下界和上界,I是近似的积分值。
例如,我们可以计算函数y=x^2在区间[0,1]内的积分值:a=0;b=1;I = quad(fun, a, b);disp(I);(2) integral函数integral函数是在MATLAB R2024a版本引入的新函数,它提供了比quad函数更稳定和准确的积分计算。
integral函数的语法如下:I = integral(fun, a, b)其中fun、a和b的含义与quad函数相同。
例如,我们可以使用integral函数计算函数y = x^2在区间[0, 1]内的积分值:a=0;b=1;I = integral(fun, a, b);disp(I);2.数值微分数值微分是计算函数导数的近似方法。
在MATLAB中,可以使用diff 函数计算函数的导数。
(1) diff函数diff函数用于计算函数的导数。
它的语法如下:derivative = diff(fun, x)其中,fun是需要计算导数的函数,x是自变量。
例如,我们可以计算函数y=x^2的导数:syms x;fun = x^2;derivative = diff(fun, x);disp(derivative);(2) gradient函数gradient函数可以计算多变量函数的梯度。
它的语法如下:[g1, g2, ..., gn] = gradient(fun, x1, x2, ..., xn)其中fun是需要计算梯度的函数,x1, x2, ..., xn是自变量。
例如,我们可以计算函数f=x^2+y^2的梯度:syms x y;fun = x^2 + y^2;[gx, gy] = gradient(fun, x, y);disp(gx);disp(gy);以上是MATLAB中进行数值积分和微分的基本方法和函数。
MATLAB作业(八章)
8.1某随动系统的微分方程为
0.07523dt d ϕ+0.7522dt
d ϕ+dt d ϕ
+K ϕ=K ψ
已知:ϕ(0)=∙ϕ(0)=∙
∙ϕ(0)=0,ψ(t)=1(t)。
试分别就K=2.5、5.0、12.5三种情况对系统进行仿真,考察ϕ(t)的动态性能。
8.2已知系统模型
⎪⎩⎪⎨⎧+--=+=∙
∙
pu
x x x pu
x x 212212, x 1(0)=x 2(0)=0 当p=1、2、10时,对以下几种情况进行仿真,并比较不同输入幅值下的系统输出响应。
(1)
u (t )=1; (2)u (t )=t ; (3)u (t )=sin (t ); (4)
u (t )=1+sin (t ); (5)u(t)=1+t+sin(t).
(1)
(2)
(3)
(4)
(5)
8.3 对如图所示的系统进行仿真。
(1)输入信号为r (t )=1(t ); (2)输入信号为如下分段函数 s
5.0t t 1s
5.0t t 2{
t r ><==)()(
(1)
(2).
f=-1的阶跃扰动,试就系统在该扰动作用下IV环节的动态过程。
8.8非线性控制系统如图所示,求系统在有饱和非线性和无饱和非线性两种情况下的动态响应,分析饱和非线性对系统动态性能的影响。
(1).
(2)。