MATLAB语言及应用.ppt

上传人:sh****n 文档编号:6379883 上传时间:2020-02-24 格式:PPT 页数:96 大小:938KB
返回 下载 相关 举报
MATLAB语言及应用.ppt_第1页
第1页 / 共96页
MATLAB语言及应用.ppt_第2页
第2页 / 共96页
MATLAB语言及应用.ppt_第3页
第3页 / 共96页
点击查看更多>>
资源描述
系统建模与仿真 王海英 参考教材 控制系统的MATLAB与仿真 王海英 高等教育出版社 系统建模与仿真 张晓华 清华大学出版社 主要内容 MATLAB语言及应用系统建模系统仿真及应用 第一部分 MATLAB语言及应用 1 Matlab操作桌面 命令窗口历史命令窗口当前目录浏览器工作空间浏览器M文件编辑器 调试器帮助导航 2 MATLAB编程基础 变量变量命名规则变量的定义特殊变量 示例 基本数据类型 在MATLAB中共有六种数据类型 每一种类型可以是一维 二维和多维的 基本的数据类型是双精度型复数 double 和字符型 char MATLAB以复数矩阵为基本的运算单元 基本语句 MATLAB最基本的语句是赋值语句 其结构为 变量名列表 表达式其中等号左边的变量名列表为MATLAB语句的返回值 若一次返回多个结果 则变量列表用 括起来 各变量间用逗号分隔 等号右边为表达式 可以是矩阵运算或函数调用 关于程序编辑 语句可以由分号 逗号 或者回车结束如果用分号结束 则左边的变量结果不会被显示在命令窗口 否则将显示左侧变量的值 每行可以写多行语句 语句之间用空格 逗号 分号进行分隔用三个黑点表示 续行 表示下一行是上一行的继续 A 1 2 3 4 5 6 用 表示注释 开始一直到行末的内容都是注释 示例 3 数据结构及其运算 双精度型 double 字符型 char 稀疏型 sparse 存储型 storage 细胞型 cell 和结构型 struct 数据类型 一维数组 一维数组的创建逐个元素输入法冒号运算符法一维数组的访问一维数组的访问遵循以下约定 用下标方式访问数组元素 下标要用一对圆括号 引起来 下标代表的是元素在数组中的位置序号 从1开始 最大值为数组中元素的个数 下标可以是常量 也可以是变量 可以访问数组中的单个元素 也可以访问数组中的某些元素 即数组的子数组 示例 例3 1 二维数组 二维数组的建立逐个输入数组元素值如果数组内元素数量少 可以直接从键盘逐个输入元素的值 需要遵循的规则是 整个数组必须用中括号 括起来数组的行与行之间用分号 分隔 或者用回车符分隔每行之间的元素必须用逗号 或者空格分隔利用M文件如果数组元素很多 或者元素值要经常改变 我们可以采用M文件来输入和保存数组 例3 2 例3 3 mydata m 二维数组的访问 二维数组的访问遵循以下约定 用下标方式访问数组元素 下标要用一对圆形括号 引起来 可以用双下标方式访问数组元素 格式为 r c 其中r为二维数组的行下标 c为二维数组的列下标 下标之间用逗号分隔 可以用单下标方式访问二维数组 二维数组的单下标是按照列优先规则排序的 即二维数组被看作是从第一列开始从左到右依次将各列首位连接而成的一维数组 单下标表示元素在这个一维数组中的位置 单下标和双下标具有对应关系可以访问二维数组的某个元素及其子数组 可以对元素和子数组赋值 例3 4 数组操作 标准数组的生成数组操作 数组运算 数组运算符数组运算函数 矩阵运算 矩阵运算符矩阵函数 例3 5例3 6 例3 8 ones功能 生成全1数组 即数组中的元素都为1 格式 Y ones n 生成n n的全1矩阵Y ones m1 m2 mk 生成m1 m2 mk的全1数组Y ones size A 生成和数组A同样尺寸的全1数组zeros功能 生成全0数组 即数组中的元素都为0 格式 同ones函数rand功能 生成均匀分布随机数组 格式 Y sand state v 设置随机发生器的初始状态为v 其他同ones函数randn功能 产生正态分布随机数组 格式 同rand函数 常用的标准数组 magic功能 产生魔方矩阵 不适用于高维数组 格式 M magic n 说明 产生n n的魔方矩阵eye功能 产生单位矩阵 即主对角线元素都为1而其他元素都为0的二维数组格式 Y eye n Y eye n m Y eys size A Diag功能 产生对角阵 即矩阵的某个对角线元素不全为0 其他元素为0 格式 X diag v k 说明 v为行向量 表示对角线元素 返回 常用的数组运算符 A B数组加法运算A B数组减法运算A B数组相乘 A和B相同位置元素的乘积A B数组相除 A和B相同位置元素相除A p数组各元素求p次幂A BA B数组对应元素间进行关系运算A BA B数组对应元素间进行逻辑运算A 数组转置 非共轭转置s A标量s与数组A运算 返回 常用的数组运算函数 三角函数sin cos asin asinh asec sect tan atan指数对数函数 exp指数函数log自然对数函数log10以10为底的对数函数log2以2为底的对数函数pow22的幂函数sqrt平方根函数复数函数abs绝对值 模angle相角 弧度 imag复数的虚部real复数的实部conj复数的共轭取整函数ceil向 方向取整fix向0方向取整floor向 方向取整round向最近的整数取整 常用的矩阵运算 A B矩阵加法A B矩阵减法A B矩阵乘法A B矩阵右除 求xB A的最小二乘解A B矩阵左除 求Bx A的最小二乘解A p矩阵乘方s A标量s与矩阵A相乘expm A 矩阵的指数函数logm A 矩阵的对数函数sqrtm A 矩阵的平方根函数inv A 矩阵的逆矩阵 返回 多项式 多项式的创建多项式的运算 运算符 关系运算符逻辑运算符逻辑函数算术运算符 关系运算符大于 大于等于 等于 不等于 逻辑运算符 逻辑与 逻辑或 逻辑非 示例 例3 9 例3 10 例3 11 例3 12 多项式常用运算 多项式加减 运算符 实现多项式的加减法多项式相乘 p conv p1 p2 p为多项式p1和多项式p2的乘积多项式相除 q r deconv p1 p2 多项式p1除以多项式p2 商多项式为q 余多项式为r多项式求导 dp polyder p 多项式p的导数多项式为dpdp polyder p1 p2 多项式p1和p2乘积的导数多项式为dp num den polyder p1 p2 有理分式 p1 p2 的求导后的有理分式为 num den 多项式求值 pA polyval p A 多项式p在自变量为A时的值多项式求根 r roots p 多项式拟合 p polyfit x y n 矩阵的特征多项式 p poly A 多项式p为矩阵A的特征多项式 返回 常用逻辑函数 any v 向量v中有非0元素 结果为1 否则为0 结果是行向量all v 向量v中都是非0元素 结果为1 结果是行向量isequal A B 判断是否相等 数组运算ismember A B A的元素是B中的元素 则A相应位置的结果为1 否则为0判断特殊数据的逻辑函数isemptyisfiniteisinfisletterisnanisprimeisrealisspace判断数据类型的逻辑函数iscellischariscellstrisfieldisglobalishandleislogicalisnumericisobjectissparseisstruct 返回 4 数据的可视化 图形窗口创建Figure 创建新的图形窗口 并将新创建的窗口作为当前绘图窗口 subplot m n p 将当前图形窗口分为m行n列个子窗口 并指定第p个子窗口为当前的绘图子窗口 子窗口序号p是按照行优先的次序排列的 例4 1 二维图形 基本二维绘图函数plot y plot x y plot x1 y1 x2 y2 绘图属性控制plot x y color linestyle marker 参数color linestyle marker为由颜色 线型 数据点等组成的字符串绘图窗口的属性控制 例4 3 例4 2 例4 4例4 5 颜色字符定义表 线型字符定义表 数据点标记字符定义表 常用二维图形绘制函数表 例4 6 三维图形 基本三维图形的绘制plot3 X Y Z s 三维网线图mesh X Y Z 曲面图surf X Y Z C 函数绘图一元函数绘图ezplot F xmin ymin 二元函数绘图ezsurf F domain ngrid 在指定矩形区域上 用指定格点数画二元函数曲面ezsurf F domain circ 在极坐标中绘制二元函数曲面 例4 7设某参数方程组为 试绘制由变量x y z确定的三维曲线 例4 7 例4 8绘制函数 在自变量取 范围内的网线图和曲面图 例4 8 例4 9绘制球面 锥面等图形 例4 9 例4 10绘制 在0 t 20区间的函数曲线 例4 11在极坐标系中绘制 的图形 例4 10 例4 11 5 M文件和程序设计 分支控制 程序控制语句 if结构ifexpressioncommandsend 说明 当表达式expression的值为真 则执行commands语句组 否则跳过commands语句组 执行end之后的语句 if else结构ifexpressioncommands1elsecommands2end 说明 如果表达式expression的值为真 则执行语句组command1 然后跳过语句组command2向下执行 若表达式expression的值为假 则跳过语句组commands1而执行语句组commands2 if elseif else结构ifexpression 1command 1elseifexpression 2command 2 elseifexpression ncommand nelsecommand elend 说明 如果表达式expression 1的值为真 则执行语句组command 1 若表达式expression 1的值为假 则判断expression 2的值 若为真 则执行语句组command 2 否则向下继续判断表达式 如果所有表达式都为假 则执行语句组command el 例5 1有分段函数 编程输入x的值 计算并显示函数值 例5 1 switch case结构switchexp constcasevalue 1commands 1casevalue 2commands 2 casevalue ncommands notherwisecommands owend 说明 表达式exp const的值和哪一个case语句后的测试值相等 就执行那个case语句下的语句组 如果exp const和所有测试值都不相等 就执行otherwise后的语句组commands ow 循环控制for循环forx Arraycommandsend 说明 x称为循环变量 commands称为循环体 循环的执行步骤是 循环变量从左到右依次取Array数组的一列 每取一列就执行一次循环体 循环体被执行的次数为Array的列数 while循环whileexpressioncommandsend 说明 如果表达式expression的值为真 则执行commands循环体 直到表达式expression的值为假 结束循环 break 说明 从循环体中跳出 并使循环结束 例5 2 输入物品的标签号码 显示物品的种类 其中标签号码为1 5 7的物品为食品 号码为10到19的物品为办公用品 号码为20 24 28的为音像制品 要求不断从键盘输入标签号码 输入一个号码显示一次物品种类 输入错误号码要给出提示 输入号码0则结束输入 例5 2 命令文件 命令文件没有输入参数也没有输出参数 只是一些Matlab命令和函数的组合 命令文件可以操作基本工作空间的变量 也可以生成新的变量 命令文件执行结束后新变量将保存在基本工作空间中 不会被自动清除 命令文件是用 m 为扩展名的文件 只要命令文件在搜索路径上 在命令窗口键入文件名就可以运行命令文件 例5 3 编写命令文件 用于求解小于1000且为2的整数次幂的正整数 例5 3 函数文件要在第一行用function关键字来显式的定义 函数文件有输入变量和输出变量 函数文件的名字和第一行所定义的函数名相同 可以用比函数定义中数目少的输入变量和输出变量来调用函数 函数文件内部定义的变量属于临时变量 只有函数运行期间才被生成 函数运行结束后 系统自动删除 函数文件 函数M文件组成 函数定义行函数M文件的第一行用关键字 function 把M文件定义为一个函数 指定函数的名字 同时定义了函数的输入变量和输出变量 输入变量的定义用圆括号 如果有多个输入变量则用逗号分隔 输出变量的定义用中括号 如果有多个输出变量则用逗号分隔 H1行所谓H1行指帮助文本的第一行 它紧跟在定义行之后并以 符号开头 用于概括说明函数的功能 在命令窗口用lookfor命令时将显示函数的H1行 函数帮助文本帮助文本指位于H1行之后函数体之前的说明文本 它同样以 符号开头 一般用来比较详细地介绍函数的功能 用法以及函数的修改记录 在命令窗口用help命令时将显示函数的H1行和所有帮助文本 函数体是函数的主体部分 函数的功能是通过函数体实现的 函数体可以包括所有的Matlab合法命令 函数和流程控制语句 注释除了函数开始处独立的帮助文本外 还可以在函数体中添加对语句的注释 注释必须以 符号开头 MATLAB在解释执行M文件时把每一行中 后面的全部内容作为注释不进行解释执行 例5 4 编写函数文件求 例5 4 子函数 Matlab允许一个函数文件内定义多个函数 其中 第一个定义的函数称为主函数 其他的函数称为子函数 关于主函数和子函数的描述如下 每个文件的第一行定义的是主函数 只有主函数可以被其他程序调用 函数文件的名字必须和主函数相同 子函数只能被处在同一个文件中的主函数或者其他子函数调用 主函数和各个子函数的工作空间是彼此独立的 即每个函数拥有自己独立的工作空间 私有函数 私有函数是在函数M文件所在目录的private子目录中的函数M文件 其性质如下 私有函数只能被private的直接父目录中定义的M文件调用 其他目录的M文件或者命令窗口无权调用私有函数 私有函数的定义和构成和普通函数相同 例5 5 编写函数文件求 例5 5 6 数值计算 线性代数函数分析数据拟合插值和样条常微分方程的数值解 线性代数 LU分解一个矩阵可以分解为一个上三角矩阵和一个下三角矩阵的乘积 称之为LU分解 LU分解是用高斯主元消去法实现的 通常要对主元位置进行交换 主元交换的方法是将被分解矩阵左乘一个由0 1构成的行交换阵 L U P lu X 对矩阵X进行LU分解 并进行主元交换 L U lu X 对矩阵X进行LU分解 无主元交换 说明 X为被分解的矩阵 L为主对角元素为1的下三角矩阵 U为上三角矩阵 P为行交换矩阵 行列式和求逆矩阵的行列式和求逆可以通过LU分解的方法求解 d det X 求矩阵X的行列式Y inv X 求矩阵X的逆矩阵 例6 1 特征值和特征向量对于求解矩阵的特征值和特征向量 D eig A 计算矩阵A的特征值 d为特征值构成的向量 V D eig A 计算矩阵A的特征值对角阵D和特征向量矩阵V V D eig A nobalance 当矩阵A中有与截断误差近似的数值c condeig A 求特征值的条件数 表示特征值对扰动的灵敏度矩阵的奇异值分解任意矩阵A可以做奇异值分解 即存在酉矩阵U和V 使下面等式成立s svd A 求矩阵A的奇异值 s为由奇异值构成的向量 U S V svd A 矩阵A的奇异值分解 例6 2 矩阵结构特征的奇异值描述矩阵的奇异值可以描述矩阵的结构特征 Matlab中提供了下列函数 函数的具体使用方法请读者参阅Matlab的帮助文件 r rank A 求矩阵A的秩 Z null A 求矩阵A的零空间 V orth A 求矩阵A的值空间 n norm A 求矩阵A的2范数 n norm A p 求矩阵A的各种范数 c cond X 求矩阵A的条件数 theta subspace A B 求A和B矩阵所张子空间的夹角 B pinv A 求矩阵A的广义逆 线性方程组的解在线性方程组中 独立方程的个数等于独立未知参数的个数 称为恰定方程 独立方程的个数大于独立未知参数的个数 称为超定方程 独立方程的个数小于独立未知参数的个数 称为欠定方程 线性方程组求解方法 左除运算符法 对于一般的非奇异矩阵A 可以求得唯一数值解 欠定方程和超定方程 可以获得最小二乘解 x A b广义逆法 如果用左除运算符求解的时候出现提示矩阵A为非奇异的警告或者解中出现Nan 则可以采用广义逆法 x pinv A b符号计算法 可以求得方程组的符号解 对于欠定方程可以求得具有自由变量的解 例6 3求以下3个方程组的解 II III I 例6 3 函数分析 函数的零点多项式的根r roots p 多项式求根函数一元函数零点x fzero fun x0 一元函数零点的最简格式多元函数的零点x fsolve fun x0 多元非线性方程求解最简格式 说明 fzero只能求得x0附近的单个零点 不能求取函数的所有零点 输入变量fun表示一元函数 可以是字符串 内联函数或者函数句柄 输入变量x0为零点的初始猜测值 自变量值 输出变量x为零点处的自变量值 在 区间内的所有零点 例6 4求函数 例6 4 例6 5 附近的解 例6 5求方程组 在 函数的极值点求一元函数fun在自变量 x1 x2 区间的最小值 x fval exitflag output fminbnd fun x1 x2 options 用单纯形法求多元函数fun在自变量向量x0附近的极小值点 x fval exitflag output fminsearch fun x0 options 用拟牛顿法求多元函数fun在自变量向量x0附近的极小值点 x fval exitflag output fminunc fun x0 options 例6 6 例6 6求二元函数 在 附近的极小值 数值微分数值导数和微分是基于差分定义的 对原始数据的采样间隔依赖很大 如果原始数据含有噪声 则数值导数结果没有什么价值 因此尽量避免求数值导数 求相邻数据间的数值差分 DX diff X 求X相邻元素的一阶差分DX diff X n 求X相邻元素的n阶差分DX diff X n dim 在dim指定的维上 求X相邻元素的n阶差分 说明 如果X是向量 差分是相邻元素相减 如果X是矩阵 差分是相邻行间对应元素相减 差分数据DX元素的个数要比被操作数X少一个 DX只是差分数据 如果相邻数据点之间的步长为DH 则DX DH为导数数据 例6 7绘制函数 的导函数在 区间的曲线 例6 7 数值积分积分计算可以采用本节介绍的相关函数 也可以采用样条积分法 还可以采用符号积分方法 一元函数的数值积分q quadl fun a b 采用递推自适应Lobatto法计算一元函数的积分 说明 fun为被积函数 可以用字符串 内联函数和函数M文件的函数句柄表示 且被积函数表达式要按照数组运算规则来编写 通常积分变量采用字母x a和b为积分变量的积分上下限 为常数数值 返回值q为数值积分的结果 例6 8求积分 例6 8 二重数值积分q dblquad fun x1 x2 y1 y2 说明 fun为被积函数 可以用字符串 内联函数和函数M文件的函数句柄表示 积分变量用x y表示 x为内重积分变量 x2和x1是变量x的积分上下限 y为外重积分变量 y2和y1是变量y的积分上下限 三重数值积分q triplequad fun x1 x2 y1 y2 z1 z2 说明 fun为被积函数 定义同上 积分变量用x y z表示 从内到外积分变量依次为x y z x2和x1是变量x的积分上下限 y2和y1是变量y的积分上下限 z2和z1是变量z的积分上下限 例6 9计算定积分 例6 9 数据拟合 已知某些离散的原始数据 建立一个曲线方程 让它以最佳的方式反映原始数据的变化趋势 尽量避免出现局部的波动 这种方法称为拟合 不要求拟合曲线经过所有的原始数据 最佳方式通常是指用拟合得到的数学模型计算出来的计算数据和原始数据之间的误差的平方和最小 这种方式称为最小二乘 多项式拟合多项式拟合是用一个n阶多项式模型去拟合原始数据的方法 需要计算的模型参数包括多项式的阶次和多项式的系数 p polyfit x y n 根据给定的数据 x y 计算n阶拟合多项式的系数向量py polyval p x 计算自变量为x时多项式p的值 估计值 说明 多项式拟合一般不要超过5阶 否则计算误差变大 拟合多项式只在原始数据范围内可以保证精度 超出范围使用拟合多项式无法保证预报的精度 例6 10 已知五个数据点 1 5 5 2 43 3 128 4 290 5 498 试画出这五个点拟合的三次曲线 例6 10 最小二乘估计线性最小二乘估计对于线性数学模型的参数估计 可以用形如Y Ax b的一阶多项式拟合来估计参数 某些非线性模型经过变量替换也可以转换为线性模型 也可以采用线性估计方法 非线性最小二乘估计 a resnorm residual exitflag output lsqnonlin Fun a0 lb ub options p1 p2 a lsqnonlin Fun a0 说明 例6 11混凝土的抗压强度y随养护时间x的延长而增加 其数学模型为 现将一批混凝土作成12个测试块 记录了养护时间x 日 及抗压强度y kg cm2 的数据 如表所示 试估计该数学模型的参数a1 a2 a3 a4 混凝土的抗压强度y和养护时间x的实测数据表 例6 11 插值和样条 曲线拟合是用带有噪声的 测量数据 构造出以某种方式最接近 真实数据 的曲线方程 因为测量数据包含噪声 所以不要求拟合曲线穿越所有测量数据 插值和拟合不同 插值认为原始数据是完全准确的 目的是用某种算法平滑的计算出这些原始数据之间的数据值 插值yi interp1 x Y xi method 计算插值点自变量为xi时的值yipp interp1 x Y method pp 用原始数据获取插值函数数据yi ppval pp xi 计算插值函数数据pp函数关系下的函数值 说明 输入变量x Y是原始数据向量对 x的数据必须以单调方式排列 xi是插值点的自变量坐标向量 输入变量method是插值方法 linear 线性插值 缺省值 cublic 三次多项式插值 spline 三次样条插值 nearst 最临近插值输出变量yi为插值点自变量为xi时的计算值 pp为插值函数数据 例6 12已知1900年到1990年间 每隔10年美国的人口数量的统计数据 单位 百万 依次为75 995 91 972 105 711 123 203 131 669 150 697 179 323 203 212 226 505 249 633 求在1975年美国人口的数量 并绘制1900到1990年间每年的人口数量趋势图 例6 12 样条样条插值是常用的一种插值方法 其特点是精度高 最平滑 但是运算速度慢 yy spline x y xx 根据原始数据 x y 计算xx的样条插值yypp spline x y 根据原始数据 x y 计算分段样条函数数据ppdpp fnder pp 求pp形式的样条函数的不定积分ipp fnint pp 求pp形式的样条函数的导数 例6 13 例6 13设函数 用样条函数求 和 常微分方程的数值解 ODE文件的编写格式要编写表示一阶向量微分方程的函数M文件 实现的微分计算functionDY Fun t Y 其中输入变量t为时间变量 输入变量Y为列向量 输出变量DY是Y的一阶导数 只含有一个自变量的微分方程称为常微分方程 ODE 工程上的许多常微分方程或者没有解析解 或者求解析解困难太大 这时可以选择其数值解法 solver解算指令常微分方程化成一阶向量微分方程时 某些向量微分方程的向量解的各个分量的量级差别较大 这对数值求解算法来说是很大的困难 表列出了solve各个解算指令的名称 精度和适用范围 solve解算指令 solve解算指令的调用格式 t Y solver ODE FUN tspan Y0 options 说明 输入变量ODE FUN是ODE函数的文件名 输入变量tspan为求数值解的时间范围 当tspan t0 tf 时 表示求解t0到tf区间的数值解 当tspan t0 t1 tf 时 表示求解tspan指定时间序列上的数值解 输入变量Y0是微分方程组的初始条件列向量 输入变量options是可选择的算法参数 输出变量t是数值解的自变量数据列向量 输出变量Y是数值解 Y是一个矩阵 每一列代表了向量解的一个分量在自变量t上的数值解 solver不仅可以求解常微分方程 还可以求解常微分方程组 例6 14求常微分方程 的解 其初始条件为 1 将常微分方程变为一阶微分方程组 令 则 2 编写ODE文件 OdeFun1 m 3 求解常微分方程的数值解 绘制y t 的曲线 3 求解常微分方程的数值解 绘制y t 的曲线 例6 14 例6 15求常微分方程组 在 0 12 区间的数值解 其初始条件为 1 编写ODE文件 OdeFun2 m 2 求解常微分方程的数值解 绘制y t 的曲线 例6 15 7符号计算 符号对象的创建符号对象的生成符号对象的数据存储格式是符号字符串 包括符号常量 符号变量和符号表达式 f sym arg 把数值 字符串或者表达式arg转换为符号对象ff sym argn flagn 把数值或数值表达式argn转换为flag格式的符号对象f sym argv flagv 把字符串 argv 按照flagv的格式转换为符号对象symsargv1argv2 定义argv1 argv2等为符号对象symsarg1arg2 flagv 定义arg1 arg2等为flagv格式的符号对象 说明 对于数值或者数值表达式argn flagn可以取以下值 d 最接近的十进制浮点精度表示 e 带估计误差的有理表示 f 十六进制浮点数表示 r 最接近的有理表示 Matlab的缺省表示方法对于字符串变量名argv flagv可以取以下 限定 项 positive 正实数 符号变量 real 实数 符号变量 unreal 非实数 符号变量syms是sym函数的简化书写方式 各符号对象之间只能用空格分开 符号常量用sym函数可以定义符号常量对象 包括符号标量对象和符号常量数组对象 定义符号常量对象的同时也可以指定数值常量的表示方法 例7 1 符号变量与符号表达式定义符号变量和符号表达式符号表达式中自变量的确定为了便于进行数学运算 通常要显示的指定表达式中的自变量 如果不指定自变量 Matlab会根据上下文关系 识别表达式中默认的自变量 独立自由的符号变量 识别表达式中自变量的基本原则是 按照字母表中靠近小写字母x的顺序识别 最靠近字母x的变量被第一个识别为自变量 例7 2 例7 3 说明 表达式可以是符号矩阵 此时变量识别是对整个矩阵进行的 函数识别的是 独立的 自由的 符号变量 符号常量或者非独立的符号变量无法被识别 识别次序是按照靠近x的远近进行的 区分大小写 总认为大写字母距离x的距离大于所有小写字母 例7 4 findsym exp 识别表达式exp中所有的自由符号变量findsym exp n 识别表达式exp中最靠近x的N个独立自由变量 符号数学函数在Matlab中 既能建立具有详细运算关系的函数 又能建立抽象数学函数 定义符号数学函数有2种方法 用符号表达式用函数M文件 在函数M文件中用符号变量作为输入变量 例7 5 Sinc函数 示例用函数M文件来定义符号数学函数 例7 6建立抽象的符号数学函数 例7 6 符号对象与其他数据类型之间的转换表7 1实现符号对象到数值 字符串之间的转换指令 例7 7多项式和符号对象之间的转换 例7 7 符号对象的代数运算 符号对象的运算符号对象的基本代数运算符号对象的基本代数运算和普通数值变量一样 可以使用算术运算符 关系运算符 仅能使用 和 其运算符的定义和数值运算相同 符号对象的函数运算数值计算使用的函数基本上也可以用于符号计算 包括三角函数 atan2除外 指数函数 对数函数 log2 log10除外 复数函数 angle除外 线性代数函数和矩阵函数 例7 8 例7 9 符号表达式分解 展开与化简collect expr v 合并符号表达式expr中符号对象v的同类项系数expand expr 对表达式expr进行多项式 三角函数 指数对数等函数展开factor expr 对符号表达式expr做因式分解horner expr 把多项式expr分解为嵌套形式 n d numden expr 提取表达式最小分母公因子d和相应的分子多项式nsimplify expr 用多种恒定变换对表达式expr进行综合化简simple expr 把expr化简为最简表达式 例7 10 例7 11写出矩阵 各元素的分子多项式和分母多项式 例7 11 例7 12化简 例7 12 符号函数的反函数g finverse f v 求指定自变量为v的函数f v 的反函数g v g finverse f 求函数f对缺省的自变量 由findsym确定 的反函数g 例7 13求 的反函数 例7 13 符号微积分 符号微分和雅可比矩阵求导数 高阶导数 偏导数是常见的数学运算df diff f v n 求函数对的n阶导数R jacobian f v 求多元向量函数的雅可比矩阵 函数极限函数的极限是通过导数来定义的 limit F x a 求 例7 14 例7 15 例7 16 符号积分求定积分 不定积分和多重积分的符号解 S int f v 求不定积分 符号计算结果不带积分常数S int f v a b 求定积分 说明 当f为矩阵时 将对矩阵的每个元素做积分运算 v缺省时 积分对findsym确认的变量进行 积分上下限a和b可以是任何数值和表达式 例7 17计算 例7 17 例7 18求多重积分 例7 18 符号序列求和s symsum f v a b 实现符号序列的求和运算 例7 19计算 和 例7 19 符号方程求解 符号代数方程组的解代数方程包括线性 非线性和超越方程等 g solve eq1 eq2 eqn var1 var2 varn g solve exp1 exp2 expn var1 var2 varn 说明 eq1 eq2 eqn 是字符串表达式的方程 或者是字符串表达式 如果它们是不含等号的字符串表达式 则相当于方程 eqi 0 var1 var2 varn 是用字符串表示的方程中的变量名exp1 exp2 expn只能是符号表达式 不能是带有等号的表达式方程 var1 var2 varn只能是符号变量 返回值g是一个结构体数据 方程组的解用g var1 g var2 g varn表示 在无法求得解析解的时候 给出数值解 例7 20 例7 20 例7 21 例7 21 符号微分方程g dsolve eq1 eq2 eqn cond1 cond2 condn v 说明 eq1 eq2 eqn 是微分方程 只能用字符串形式 微分方程是函数必须的输入变量 cond1 cond2 condn 是初始条件 也只能用字符串形式 v 定义了微分方程的独立变量名 微分方程解中的自变量名 只能用字符串形式 默认的独立变量名为t 微分方程字符串中 Dny表示y的n阶导数 Dy表示y的一阶导数 返回值g是一个结构体变量 要引用其成员才能得到方程的解 例7 22 例7 22 例7 23 例7 23 积分变换 傅立叶变换及其反变换Fw fourier ft t w 求时域函数ft的傅氏变换Fwft ifourier Fw w t 求频域函数Fw的傅氏反变换ft 说明 ft是以时间t为自变量的时域函数 Fw是以角频率w为自变量的频域函数 一般输入参数t和w可以省略 例7 24 例7 24 拉普拉斯变换及其反变换Fs laplace ft t s 求时域函数ft的拉氏变换Fwft ilaplace Fs s t 求频域Fs的拉氏反变换ft 说明 ft是以时间t为自变量的时域函数 Fs是以复频率s为自变量的频域函数 一般输入参数t和s可以省略 例7 25 例7 25 变换及其反变换Fz ztrans fn n z 求时域序列fn的Z变换FzFn iztrans Fz z n 求频域序列Fz的Z反变换fn 例7 26 例7 26 从10个采样周期内的响应值可以可以看到 系统的单位速度响应从第2个采样周期后就完全跟随上了输入信号 因此跟踪拍数为2 8Simulink 一 Simulink的基本操作 在MATLAB的命令窗口直接键入 Simulink 并回车 单击MATLAB工具条上的Simulink图标 在MATLAB菜单上选File New Model 运行Simulink的三种方式 常用的标准模块 信号源模块库 Sources 连续系统模块库 Continuous 离散系统模块库 Discrete 输出模块库 Sinks 非线性系统模块库 Discontinuities 数学运算模块库 MathOperations 例8 1 已知单位负反馈二阶系统的开环传递函数为试绘制单位阶跃响应的实验结构图 模块的操作 模块的选取模块的复制 剪切 删除 移动模块的连接模块参数的设置 模块的外形的调整 改变模块的大小调整模块的方向给模块加阴影 模块名的处理 模块名的显示与消隐修改模块名 例8 2 对例8 1的结构图进行模块处理 二 系统仿真及参数设置 算法设置 Solver 设置起始时间和终止时间 Simulationtime 算法设置 Solveroption 算法类型设置仿真算法设置设置输出选项 变步长解法 定步长解法 工作空间设置 WorkspaceI O 从工作空间读入数据 Loadfromworkspace 保存数据到工作空间 Savetoworkspace 初始化状态模块 SIMULINK子系统 在已有的系统模型中建立子系统在已有的系统模型中新建子系统子系统应用触发子系统 在控制信号满足某种变化要求的瞬间可以触发 激活 子系统 然后保持子系统的输出状态 等待下一个触发信号 它允许用户自己设置在控制信号的上升沿 下降沿或控制信号变化时触发子系统 使能子系统 控制信号分成 允许 和 禁止 两种 在允许信号控制下 可以执行子系统中的模块 否则将禁止其功能 为保证整个系统的连贯性 在禁止状态下子系统仍然有输出信号 用户可以选择继续保持禁止前的信号 或复位子系统 强制使其输出零信号 使能触发子系统 在使能状态下被触发时将激活该子系统 否则将禁止子系统 封装子系统 将完成特定功能的相关模块集合到一起 对其中经常要设置的参数设置为变量 然后封装 使得其中变量可以在封装系统的参数设置对话框中统一进行设置 例8 3 例8 4 图标编辑选项卡 Icon 参数设置选项卡 Parameters 初始化设置选项卡 Initialization 文档编辑选项卡 Documentation 例8 4 S函数的建立 S函数就是S Functions 是System Functions的缩写 当MATLAB所提供的模型不能完全满足要求时 就可以通过S函数提供给用户自己编写程序来满足自己要求模型的接口 S函数使用有固定格式 只能用于基于Simulink的仿真 并不能将其转换成独立于MATLAB的程序 S函数功能非常全面 适用于连续 离散以及混合系统 MATLAB提供了编写S函数的模板文件 该模板文件位于MATLAB根目录toolbox Simulink blocks下 文件名为sfunmpl m 该文件给出了S函数完整的框架结构 包含一个主函数和若干子函数 每一个子函数都对应于一个flag值 用户还可以根据编程需要加以修正 S函数的格式为 Function sys x0 str ts sfun t x u flag p1 p2 其中sfun是S函数的函数名 t x u分别为时间 状态和输入信号 flag为标志位 p1 p2为参数 S函数的模板格式为 function sys x0 str ts sfuntmpl t x u flag switchflag case0 sys x0 str ts mdlInitializeSizes 调用初始化子函数case1 sys mdlDerivatives t x u 调用计算导数子函数case2 sys mdlUpdate t x u 调用离散状态变量更新子函数case3 sys mdlOutputs t x u 计算输出子函数case4 sys mdlGetTimeNextVarHit t x u 计算下一仿真时刻子函数case9 sys mdlTerminate t x u 终止仿真子函数otherwiseerror Unhandledflag num2str flag flags为其他值提示错误信息end 1 初始化子函数function sys x0 str ts mdlInitializeSizessizes simsizes sizes NumContStates 0 设置连续状态变量个数 默认值为0sizes NumDiscStates 0 设置离散状态变量个数 默认值为0sizes NumOutputs 0 设置输出变量的个数 默认值为0sizes NumInputs 0 设置输入变量的个数 默认值为0sizes DirFeedthrough 1 输入信号是否直接在输出端出现 取值为0或1sizes NumSampleTimes 1 设置采样周期的个数 默认值为1sys simsizes sizes x0 设定初始值 默认值为 str ts 00 00 用于连续系统 10 表示继承其前的采样时间设置2 计算导数子函数functionsys mdlDerivatives t x u sys 计算结果由sys变量返回3 离散状态变量更新子函数functionsys mdlUpdate t x u sys 更新后的离散状态变量由sys变量返回 4 计算输出子函数functionsys mdlOutputs t x u sys 计算的输出向量由sys变量返回5 计算下一仿真时刻子函数functionsys mdlGetTimeOfNextVarHit t x u sampleTime 1 设置本函数的调用时间sys t sampleTime 计算下一采样时刻由sys变量返回6 终止仿真子函数functionsys mdlTerminate t x u sys 说明 1 在实际运用时 并不是都要调用所有的子函数 用户可根据实际需要去掉某些值 2 输入参量的设置可在调用此S函数时给定 例8 6应用S函数实现增益 使得y 4 u 例8 6
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!