已阅读5页,还剩75页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章MATLAB程序设计 MATLAB作为一种应用广泛的科学计算软件 不仅具有强大的数值计算 数据可视化功能 而且具有强大的程序设计功能 通过编写扩展名为 m的M文件 用户可以实现各种复杂的功能 且MATLAB语言语法简单 库函数丰富 程序易于调试 极大方便了用户的开发过程 本章主要介绍MATLAB中的M文件 函数定义 类型 参数传递方法 程序控制结构 代码优化方法和程序调试方法等 学习目标 掌握MATLAB中脚本M文件和函数M文件的概念 掌握MATLAB中函数变量类型 函数参数传递方法 函数类型 函数句柄 掌握MATLAB中的程序流程控制语句 掌握MATLAB中的代码优化方法 掌握MATLAB中的程序调试方法 5 1M文件 1 概念MATLAB语言编写的程序文件称为M文件 一个M语言文件就是由若干MATLAB的命令组合在一起构成的 通过一个简单的指令就可以执行这些命令 M语言文件是纯文本格式的文件 其扩展名为 m 2 M文件的创建通过 File 菜单中 New 子菜单下的 M File 命令来启动meditor编辑器 直接单击MATLAB用户界面工具栏上的新建按钮来启动meditor编辑器 3 M文件分类根据调用方式的不同分为两类 1 独立的M文件 脚本文件 ScriptFile 2 可调用的M文件 函数文件 FunctionFile 5 1 1脚本文件脚本M文件 将原本要在MATLAB环境下直接输入的多条语句 存放在 m后缀的文件 这一文件称为脚本文件 在命令行键入文件名 Matlab会打开这一脚本文件 并执行文件内容 脚本文件不包含输入参数和输出参数 通常由M文件正文和注释部分构成 文件正文主要实现特定功能 而注释是给出代码说明 便于阅读 例5 1 脚本文件 g 0 0 5 20 创建一维向量X sin g y cos g z x y plot g z 以g为横坐标 绘制x y的图形xlabel g ylabel x y 将例5 1的文件名存储为example61 然后按下F5键或选择Debug菜单的Run项 都可以运行此脚本M文件 也可以在命令窗中输入example61后回车即可运行 程序运行结束后 变量g x y和z均保存在基本工作空间中 可用命令whos查看 5 1 2函数M文件函数M文件 以固定格式书写的程序代码 第一行以function开始 是函数定义行 函数文件能够接受用户的输入参数 进行计算 并将计算结果作为函数的返回值返回给调用者 MATLAB提供的M语言函数文件是系统M文件 用户自己利用M语言编写的文件为自定义函数文件 函数文件由5部分构成 函数定义行H1在线帮助行函数帮助文本函数体注释 1 函数定义行functiony fun x function为函数定义的关键字 fun为自定义的函数名 y为输出参数 x为输入参数 即 输出实参表 函数名 输入实参表 注意 函数调用时各实参出现的顺序 个数 应与函数定义时形参的顺序 个数一致 否则会出错 function行中输入输出参数名可以和调用时的参数不同名 当有多个变量输入输出时 function y1 yn fun x1 x2 x3 当不含输出变量时 可以直接省略输出部分或用空方括号表示 functionprintresults x function printresults x 2 H1行以 开头 在Matlab中不执行 通常是帮助文本的第一行 他提供M文件的最重要信息 H1行可由helpfunction name命令显示 也可以用lookfor命令显示 3 函数帮助文本以 开头 用来比较详细的说明这一函数 也可以由helpfunction name命令显示内容 可以显示从H1行到第一个不是以 开头的行为止 4 函数体是Matlab中要执行的主程序 通常是用户自己设计的M函数 5 注释以 开头 可出现在函数的任意位置 也可以加在语句行之后 以便对文本进行解释 例5 2 函数M文件 编写函数 计算向量元素均值 functiony average x Function第一个字母不可以大写 AVERAGE求向量元素的均值 语法 y average x 其中 x为向量 y为计算得到向量元素的均值 若输入参数为非向量则出错 代码行 m n size x 判断输入参数是否为向量if m 1 n 1 m 1 保存该文件 保存时函数名和文件名必须一致 否则 调用函数时需要使用文件名称而非函数名称 调用此函数时在命令窗口输入如下命令 x 123 y average x y 2上述函数第一行为函数定义行 定义了函数名称average 输入变量x和输出变量y 其中function为关键词 其后黄色标注行为在线帮助 紫色标注为注释行 白色字体是函数主题 规范函数的运算过程 并指出输出自变量的值 由于H1帮助行的特殊作用 所以用户自定义M函数文件时 一定要编写相应的h1帮助行 对函数进行简明 扼要的说明或解释 若在命令窗口键入指令helpaverage 则 helpaverageAVERAGE求向量元素的均值语法 y average x 其中 x为向量 y为计算得到向量元素的均值若输入参数为非向量则出错 例 length函数的调用 x 123 y 123 456 length x 向量的元素个数即为其长度ans 3 length y 列数即为矩阵的长度ans 3 脚本文件与函数M文件区别 1 脚本文件没有输入输出参数 函数M文件有 2 脚本文件运行中可以调用工作空间的数据 运行中产生的所有变量为全局变量 函数文件不能调用工作空间的数据 运行中产生的所有变量为局部变量 3 脚本文件可直接运行 函数文件不能 只能调用 5 1 3函数变量 函数中的变量包括局部变量 全局变量和永久变量 函数中的所有变量除非特殊声明外都是局部变量 这些变量存储在该函数独立的工作区中 与其他函数的变量及主工作区中的变量分开存储 当函数调用结束时 这些变量随之删除 不保存在内存中 并且 除了函数返回值 该函数不改变工作区中其他变量的值 全局变量是在不同的函数工作空间以及基本工作空间中可以被共享的变量 任何函数如果需要使用全局变量 则必须首先声明 语法为 global变量名1变量名2 除局部变量和全局变量外 MATLAB中还有一种变量类型为永久变量 永久变量有如下特点 1 只能在M函数文件内部定义 2 只有该变量从属的函数能够访问该变量 3 当函数运行结束时 该变量的值保留在内存中 因此当该函数再次被调用时可以再次利用这些变量 永久变量的定义方法为 persistent变量名1变量名2 5 1 4函数参数 1 确定函数参数数目当调用一个函数时 所用的输入变量和输出变量的数目 在函数内是确定的 函数nargin确定输入变量个数 函数nargout确定输出变量个数 例5 3 nargin函数和nargout函数的使用 根据函数输入输出参数数量执行对应的功能 function x0 y0 myplot x y npts angle sub MYPLOTPlotafunction MYPLOT x y npts angle sub book iLoveM Thefirsttwoinputargumentsare required theotherthreehavedefaultvalues ifnargin 5 sub 20 end ifnargin 4 angle 10 endifnargin 3 npts 25 end ifnargout 0plot x y elsex0 x y0 y end在上述函数中 函数可以接受2 5个参数 通过nargin确定函数输入参数个数 并对缺少的参数赋予默认值 利用nargout确定输出参数的个数 如果输出参数为0 则绘制图形 不输出任何值 否则输出x0和y0的值 若输出参数的个数与函数定义的输出参数个数不一致时 将计算得到的前几个输出参数作为返回值 2 传递可变数目的参数函数varargin和varargout允许编程者输入可变数目的变量给函数或者让函数返回可变数目的变量 MATLAB封装所有的输入参数为单元数组 封装所有的输出参数为单元数组返回给调用者 例5 4 varargin函数的使用 function xmin ymin testvar varargin fork 1 length varargin x k varargin k 1 对单元数组varargin进行访问 y k varargin k 2 endxmin min x ymin min y 函数testvar可以调用具有不同数目的输入参数 如下所示 a b testvar 23 15 48 65 42 23 a 1b 2上例函数testvar可以接受任意个数的输入参数 并将所有输入参数作为一个元胞数组 利用花括号和圆括号对数组元素进行访问 实现了输入参数的调用 例5 5 varargout函数的使用 function varargout testvar2 arrayin fork 1 nargoutvarargout k arrayin k Cellarrayassignment 单元数组赋值end函数testvar2返回数组arrayin的每一行 如下所示 a 12 34 56 78 90 p1 p2 p3 p4 p5 testvar2 a p1 12p2 34p3 56p4 78p5 90 函数varargin和varargout可以出现在输入输出变量列表的末尾 函数调用时必须指定需要的输入和输出变量 如下所示 function out1 out2 example1 a b varargin function i j varargout example2 x1 y1 x2 y2 flag 5 1 5函数句柄 利用函数句柄可以实现对函数的间接调用 可以通过将函数句柄传递给其他函数实现对函数的操作 也可以将函数句柄保存在变量中 函数句柄通过 符号创建 语法为 fhandle functionname其中fhandle为函数句柄 functionname为函数名 函数句柄也可以通过创建匿名函数的方式创建 语法为 fhandle arglist expr其中expr为函数体 arglist为逗号分隔开的输入变量列表 例如 sqr x x 2创建了用于计算输入变量平方的匿名函数 如果输入变量为空 则arglist为空 t datestr now 匿名函数的输入变量为空 通过函数句柄实现对函数的间接调用 其调用语法为 fhandle arg1 arg2 argN 其中fhandle为函数句柄 保存函数句柄 可使用单元数组 如下所示 trigFun sin cos tan plot trigFun 2 pi 0 01 pi 5 1 6函数类型 1 主函数通常M文件中的第一个函数为主函数 主函数后可以是任意数目的子函数 主函数可以被该文件之外的其他函数调用 主函数的调用通过存储该函数的M文件的文件名调用 M文件的名称一般与主函数的名称保持一致 2 子函数M文件中可以包括多个函数 除主函数之外的其他函数称为子函数 每个子函数以函数定义语句开始 直至下一个函数的定义或文件的结尾 各个子函数以任意顺序出现 但主函数必须最先出现 子函数没有在线帮助 且只能被主函数或该文件内的其他子函数调用 例5 8 主函数和子函数 function avg med newstats u 主函数 NEWSTATSFindmeanandmedianwithinternalfunctions n length u avg mean u n med median u n functiona mean v n 子函数 Calculateaverage 计算平均 a sum v n functionm median v n 子函数 Calculatemedian 计算中位数 w sort v 沿着输入参量v的不同维的方向 从小到大重新排列v中的元素 ifrem n 2 1m w n 1 2 elsem w n 2 w n 2 1 2 end当在M文件中调用函数时 系统首先判断是否为子函数 然后判断是否为私有函数 最后判断其是否为当前目录下的标准M文件函数或者系统内置函数 3 嵌套函数函数体可以定义其他的函数 这种内部函数称为嵌套函数 当M文件存在一个或多个嵌套函数时 M文件中的所有函数必须以end结束 嵌套函数的语法如下所示 functionx A p1 p2 functiony B p3 end end每个函数可以嵌套多个函数 通常为平级嵌套结构和多层嵌套结构 例5 9 平级嵌套结构 functionx A p1 p2 functiony B p3 endfunctionz C p4 end end例中函数A嵌套了函数B和函数C 例5 10 多层嵌套结构 functionx A p1 p2 functiony B p3 functionz C p4 end end end例中函数A嵌套了函数B 函数B嵌套了函数C 一个嵌套函数可以被下列函数调用 1 该嵌套函数的上一层函数 2 同一母函数下的同级嵌套函数 3 被任一低级别的函数调用 4 私有函数私有函数是指位于private目录下的M文件函数 私有函数的构造与普通M函数完全相同 私有函数只能被private目录的上一级目录下的M函数文件调用 而不能被其他目录下的任何M函数 M脚本文件调用 也不能被上一级目录下的M脚本文件调用 5 重载函数函数重载允许多个函数使用相同的函数名 不同的输入变量数据类型 函数调用时 系统根据函数输入变量的数据类型选择对应的函数 5 2MATLAB的程序控制结构 程序流程控制包含控制程序的基本机构和语法 结构化的程序主要有以下几种结构 顺序结构条件控制循环控制误差控制程序终止MATLAB的这些程序结构与其他高级语言类似 使得MATLAB编程功能更加强大 5 2 1顺序结构语句 顺序结构最简单的程序结构 系统在编译程序时 按照程序的物理位置顺序执行 这种程序容易编制 但是结构单一 能够实现的功能有限 5 2 2条件控制语句 在编写程序时 经常需要根据不同的条件选择运行的命令 此时需要使用条件判断语句进行程序控制 MATLAB的条件判断可以使用if语句或switch语句 1 if语句条件判断语句为if语句 通常采用if else end分支结构 包含单分支 双分支和多分支三种形式 if语句的最简单结构为 if逻辑表达式执行代码块end如果逻辑表达式为真 则执行if和end语句之间的代码 如果逻辑表达式为假 则跳过if和end语句之间的代码 例5 12 if语句的使用 ifrem a 2 0 rem为求余数的命令disp aiseven 显示a是偶数b a 2 end当逻辑表达式为一个空数组时 MATLAB认为条件为假 当逻辑表达式为变量时 逻辑真的条件为变量非零 对于矩阵变量 则判断矩阵的所有元素为非零 当程序有两个选择时 可以使用if else end结构 此时程序结构为 if表达式执行代码块1else执行代码块2end当表达式为真时 执行代码块1 否则执行代码块2 当程序包含多个选择时 可以使用elseif语句 结构为 ifexpression1statements1elseifexpression2statements2elsestatements3end其中可以包含任意多个elseif语句 例5 13 if elseif else end语句的使用 functionifboth a b ifa 0 ifboth a b aandbarebothlargerthan0done 2 switch case分支语句MATLAB中的另一种多选择语句为分支语句 分支语句的结构为 switch表达式 标量或字符串 case值1语句体1 当表达式 值1时 执行语句体1 然后跳出该结构case值2语句体2 当表达式 值2时 执行语句体2 然后跳出该结构 otherwise语句体 当表达式的值不等于前面所有检测值时 执行该语句体end 当表达式等于值1时 执行语句体1 当表达式等于值2时 执行语句体2 当表达式的值不等于关键字case所列的值时 执行otherwise后的语句体 由此可见 上述结构体保证至少有一组命令会得到执行 在switch语句中 程序仅仅执行符合条件的case分支 例5 14 switch case语句的使用price input 请输入商品价格 switchfix price 100 case 0 1 价格小于200 不打折rate 0 case 2 3 4 价格在200与500之间 3 折扣rate 3 100 case 5 6 7 8 9 10 价格在500与1000之间 5 折扣 rate 5 100 otherwiserate 10 100 EndPrice price 1 rate 当多个条件使用一个case分支时 则需要使用元胞数组与之配合 case命令后面的检测值可以是一个标量或者一个字符串 还可以是一个单元数组 如果检测值是一个单元数组 MATLAB将表达式的值和该单元数组中的所有元素进行比较 如果单元数组中的某个元素和表达式的值相等 MATLAB认为检测结果为真 从而执行与该检测值相等的一组命令 switchvarcase1disp 1 case 2 3 4 多个条件使用一个case分支时 则需要使用元胞数组与之配合disp 2or3or4 case5disp 5 otherwisedisp somethingelse end 5 2 3循环控制语句 循环语句一般用于有规律的循环计算 能够在很大程度上精简代码 MATLAB中的循环语句有两种 for语句和while语句 1 for语句for循环允许一组命令以固定和预定的次数重复 for循环的结构为 for循环变量 开始值 增量 结束值执行代码块end缺省增量为1 可以指定任意的增量 如果增量值为正 则当循环变量大于结束值时 循环终止 如果增量值为负 则当循环变量小于结束值时 循环终止 for循环可以嵌套使用 例5 15 for循环的嵌套form 1 5forn 1 100A m n 1 m n 1 endendfor循环的循环变量可以是行向量 也可以使用矩阵作为循环次数的控制变量 每一次循环k是矩阵A的列矢量 循环的次数为矩阵的列数 fork Astatementsend 2 while循环for循环以固定次数执行程序代码 while循环以可变的次数执行程序代码 当while的条件表达式为真时 执行代码块 直到条件表达式为假 while语句的结构为 while表达式执行代码块end 例5 16 计算n 100的最大的n值 n 1 whileprod 1 n 100 prod函数用于计算向量所有元素的积 n n 1 end 5 2 4误差控制语句 MATLAB为编程者提供了错误处理语句try catch end语句 其语句结构为 try运行代码块1 总被执行 若正确 则跳出此结构catch运行代码块2 仅当运行代码块1出现执行错误 运行代码块2执行end该语句执行try中的程序代码块 如果遇到程序错误则运行catch中的程序代码块 如果程序运行成功 则退出该try catch end语句 如果在catch和end之间的程序运行出错 则程序运行终止 或者如果存在其它的try catch end结构 则运行下一个try catch end结构 可以利用lasterr命令查看发生错误的原因 注意try和catch运行代码块中的语句之间用逗号隔开 例5 17 误差控制语句的使用 n 4 A pascal 3 将3阶帕斯卡矩阵赋给A tryA n A n catchA end A end endA end 136 lasterrans Indexexceedsmatrixdimensions 指数超过矩阵尺寸 5 2 5其他流程控制语句 在程序设计中通常需要提前终止循环 结束程序的运行 显示错误信息等情况 MATLAB提供了continue break return echo error等语句 与前面介绍的语句相结合 更好地完成流程的控制 1 continue语句continue语句通常用在循环控制中 包括for循环和while循环 用于结束当次循环 继续执行下一次循环 但是不结束当前循环 一般continue语句与if语句相结合 当满足一定的条件时 执行continue语句 例5 18 continue语句用于循环控制fid fopen magic m r 用指定 读出 方式打开文件 并赋予文件代号fid count 0 while feof fid 函数feof的逻辑非 若文件指针fid未读到文件末尾则继续循环line fgetl fid fgetl用于从格式文本文件读取行ifisempty line strncmp line 1 strncmp用于字符串比较continueendcount count 1 enddisp sprintf dlines count 2 break语句break函数也用于循环控制 中断当前循环 与continue不同 break跳出当前循环 不再执行该循环的任何操作 例5 19 break语句用于循环控制fid fopen fft m r s while feof fid line fgetl fid ifisempty line break ends strvcat s line strvcat用于垂直连接字符串enddisp s 3 return语句return函数结束正在运行的函数 返回到调用函数 经常用于函数的末尾正常结束函数的运行 也可以在某条件满足时强行结束函数的运行 4 error语句显示出错信息并终止当前函数的运行 error函数的语法为 error message 类似的语句还有warning函数 二者区别在于warning函数显示警告信息后程序仍继续执行 5 input语句input函数用来提示用户从键盘输入数值 字符串或数组等数据 并接收输入值 input函数的语法为 user entry input prompt 在屏幕上显示提示信息prompt 等待用户的输入 并将输入赋给变量user entry user entry input prompt s 在屏幕上显示提示信息prompt 等待用户的输入 并将输入作为字符串赋给变量user entry 5 keyboard语句程序运行时如果遇到keyboard函数 将停止文件的执行并将控制权交给键盘 通过在提示符前显示K来表示一种特殊状态 在M文件中使用该函数 对程序的调试和在程序运行中修改变量都很方便 7 pause语句该命令用于暂时中止程序的运行 等待用户按任意键继续运行 该函数在程序的调试过程和用户需要查询中间结果时使用 pause函数的语法为 pause 停止M文件的执行 按任意键继续pause n 中止执行程序n秒后继续 n是任意整数pauseon 允许后续的pause命令暂时中止程序的运行pauseoff 禁止后续的pause命令暂时中止程序的运行 5 3MATLAB程序优化 MATLAB提供了两种方法进行程序的优化 一种通过Profiler工具 另一种通过tic和toc函数进行 本节将介绍这两种程序运行分析的方法 并介绍程序优化的常用方法 5 3 1通过Profiler进行程序运行分析 Profiler工具为MATLAB中的图形用户接口 用于分析程序运行时各个部分所消耗的时间 辅助用户进行程序优化 Profiler可以从以下几个方面提供程序运行信息 1 避免由于疏忽造成的非必要操作 2 替换运行较慢的算法 选择快速算法 3 通过存储变量的方式避免重复计算 通过Profiler工具进行程序运行分析通常按以下步骤进行 1 查看Profiler生成的通体报告 查找运行时间最多的函数或调用最频繁的函数 2 查看这些函数的详细报告 查找其中运行时间最多的语句或调用最频繁的语句 3 确定在运行时间最多的函数或代码是否存在改进的可能 4 单击界面链接 打开相应文件进行修改 5 重复进行上述的分析 修改 直到得到满意结果 下面介绍Profiler工具的具体使用 1 打开ProfilerMATLAB中可以通过以下方式打开Profiler 1 单击MATLAB工具栏中的Profiler图标 激活Prolifer工具 2 对于在编辑器中打开的M文件 选择Tools OpenProfiler 3 在命令行窗口中输入 profilerviewer 2 运行ProfilerProfiler工具界面如图6 1所示 在Runthiscode中输入需要分析的命令或表达式 单击startprofiling按钮 开始分析 3 查看分析结果分析完成后 Profiler会生成分析报告 包括总体报告和针对每个函数的详细报告 总体报告中包括函数名 被调用次数 总运行时间 函数单独运行时间 即不包含其子函数的运行时间 及函数运行时间的图形显示 如图6 2所示 用户可以单击每列的标题改变结果的排序方式 也可以单击函数标题查看该函数的详细报告 函数详细报告中包括该函数中每行代码的被调用次数和运行时间 并且可以显示其中的子函数 函数列表等 如图6 3所示 另外用户可以单击 Copytonewwindowforcomparingmultipleruns 将该结果保存至新的窗口中 用于修改代码后进行再次分析 比较 5 3 2通过tic和toc函数进行程序运行分析 如果只需要了解程序的运行时间 或者比较一段程序在不同应用条件下的运行速度 可以通过计时器来进行 计时器包含两个函数 tic和toc函数 tic函数用于开始计时器 toc用于关闭计时器 并计算程序运行的总时间 计时器函数的语法为 ticanystatements 所需计时的程序代码toct toc 保存计时时间 5 3 3程序优化的常用方法 同样的功能可以采用不同的编程方法实现 不同的编程方法运行速度不同 本节将介绍一些提高M文件执行速度 优化内存管理的常用方法 包括循环向量化和数组内存的预分配等 1 循环向量化MATLAB的一个缺点是当对矩阵的单个元素作循环时运算速度很慢 编程时 把循环向量化 不但能缩短程序的长度 更能提高程序的执行效率 由于MATLAB的基本数据类型为矩阵和向量 所以编程时 应尽量对向量和矩阵编程 而不是对矩阵元素进行编程 例5 20 向量化for循环 loop mtic 开始计时x 1 fork 1 1001y k log10 x x x 0 01 endtoc loopElapsedtimeis0 006188seconds vetcor loop mticx 1 0 01 10 y log10 x toc vector loopElapsedtimeis0 003630seconds 对比可得 编程时尽量不用循环语句 2 数组内存预分配在for循环或while循环中 如果数组大小随着循环而增加则会严重影响内存的使用效率 如下面的代码 tica 123 456 789 fori 1 100y i det a i endtoc运行得 Elapsedtimeis0 100146seconds 该代码首先创建变量x 其值为0 在for循环中 将其扩展为长度为100的一维数组 在每一次扩展中 系统需要寻找更大的连续内存区域 用于存放该数组 并将数组从原地址移动到新地址中 该代码可以通过下面的代码实现 tica 123 456 789 y zeros 1 100 fori 1 100y i det a i endtoc运行 Elapsedtimeis0 002580seconds 在该代码中 首先为数组x分配内存区域 将x的所有元素赋值为0 这样可以节约重新分配内存的时间 提高程序的效率 MATLAB中 可以用于分配内存的函数有zeros和cell 分别用于数值数组和单元数组分配内存 用zeros为数组分配内存时 如果数组的类型是double以外的类型 则应利用下面的语句进行 A zeros 100 int8 该语句为A分配100 100的int8类型的内存 A int8 zeros 100 该语句为A分配100 100的double类型的内存 再将其转换为int8类型 3 其他方法1 对数组赋值时避免改变数组的类型或者数组大小 2 对实数进行操作 尽量避免复数的操作 3 合理使用逻辑运算符 4 避免重载MATLAB中的内置函数和操作符 5 通常情况下函数的运行效率高于脚本文件 6 load和save函数效率高于文件输入输出函数 5 4程序调试 MATLAB程序中的错误包括语法错误和逻辑错误 语法错误可以由编译器检测 在编写时 如果语法出现错误 则编辑器会在错误处标志红色弯曲下划线 同时如果将鼠标放置此处会显示错误内容提示 或者当下划线为橙色时 表示此处语法正确
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宜宾市审计备考题库中心2025年第二次公开考核招聘工作人员领取笔试准考证备考题库参考答案详解
- 2026重庆一中寄宿学校融媒体中心招聘1人备考题库及一套完整答案详解
- 成都市武侯区盐外芙蓉学校2026年中学教师招聘备考题库及完整答案详解
- 2025年裕民县招教考试备考题库带答案解析
- 2025年石家庄工商职业学院马克思主义基本原理概论期末考试模拟题带答案解析(夺冠)
- 2025年辽宁科技学院马克思主义基本原理概论期末考试模拟题带答案解析(必刷)
- 2025年重庆文化艺术职业学院单招职业技能考试模拟测试卷附答案解析
- 2025年镇原县幼儿园教师招教考试备考题库附答案解析(必刷)
- 2025年长垣烹饪职业技术学院马克思主义基本原理概论期末考试模拟题含答案解析(夺冠)
- 2025年青海建筑职业技术学院单招职业倾向性测试题库带答案解析
- JIS K 6253-1-2012 硫化橡胶或热塑性橡胶硬度测定.第1部分-一般指南
- 圆柱齿轮减速机维修课件
- 河道整治施工过程中的风险控制方案
- 小学心理教学工作总结
- GB/T 5576-2025橡胶和胶乳命名法
- 【语文】荆州市小学三年级上册期末试卷(含答案)
- 压疮及失禁性皮炎护理
- 储备园长笔试题目及答案
- 铁路运输安全管理体系建设方案
- 职工帮困基金管理办法
- 2025ESC瓣膜性心脏病管理指南解读课件
评论
0/150
提交评论