收藏 分享(赏)

MATLAB全部实验及答案.doc

上传人:tangtianxu1 文档编号:2956608 上传时间:2018-09-30 格式:DOC 页数:36 大小:6.51MB
下载 相关 举报
MATLAB全部实验及答案.doc_第1页
第1页 / 共36页
MATLAB全部实验及答案.doc_第2页
第2页 / 共36页
MATLAB全部实验及答案.doc_第3页
第3页 / 共36页
MATLAB全部实验及答案.doc_第4页
第4页 / 共36页
MATLAB全部实验及答案.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、1实验项目序号 1 MATLAB 基本操作一、实验目的熟悉 MATLAB 软件环境,掌握命令窗口的使用。二、实验基本知识1、熟悉 MATLAB 的桌面工具和环境2、Start 菜单2三、主要仪器及耗材计算机四、实验内容和步骤1、 MATLAB 的启动及操作界面认识说明有哪几种启动的方法;操作界面有哪些窗口;对常用的窗口作些简单的介绍。 使用 Windows 的“开始”菜单。 运行 MATLAB 系统的启动程序 matlab.exe。 利用桌面上的快捷方式。 MATLAB 主窗口 命令窗口(Command Window) 当前目录窗口(Current Directory) 工作空间窗口(Work

2、space) 命令历史窗口(Command History)2、 下列符号中哪些是 MATLAB 的合法变量名?用给变量赋值的方法在机器上验证你的答案(3vars、global、help、My_exp、sin、X+Y、_input、E-4、AbCd、AB_C_。 )help,My_exp,sin,AbCd,AB_C_;3、命令窗口的简单使用1)简单矩阵的输入1 2 3A = 4 5 67 8 92)求12+2(7-4)3 2的算术运算结果4、有关向量、矩阵或数组的一些运算1)设 A=15;B=20;求 C=A+B 与 c=a+b?2)设 A=1 2 3;4 5 6;7 8 9,B=9 8 7;

3、6 5 4;3 2 1;求 A*B 与 A.*B?A*B 遵循矩阵运算,A.*B 遵循每个对应元素之间进行相乘33)设 A=10,B=20;求 C=A/B 与 D=AB?44)设 a=1 -2 3;4 5 -4;5 -6 7请设计出程序,分别找出小于 0 的矩阵元素及其位置(单下标、全下标的形式) ,并将其单下标转换成全下标 a=1 -2 3;4 5 -4;5 -6 7;/%定义矩阵 b = a(find(a c = find(a x,y = find(a x,y = ind2sub(size(a),find(a a=1 2 3;3 4 2;5 2 3; a2 % 矩阵运算 a.2 %数组与矩

4、阵的乘法7)有一段程序设计如下,请思考并说明运行结果及其原因clearX=1 2;8 9;3 6;X( : )解:转化 X 为列向量8)使用两种方法,创建一稀疏矩阵解:1)a = eye(5); %创建 5 阶单位矩阵sparse(a) %将 a 构造为稀疏矩阵ans =(1,1) 1(2,2) 1(3,3) 1(4,4) 1(5,5) 12) data = 1 2 2 2; ir = 1 3 2 4; jc = 1 2 4 1; s=sparse(ir,jc,data,4,4)s =(1,1) 1(4,1) 2(3,2) 2(2,4) 269)写出下列指令的运行结果 A = 1 2 3 ;

5、B = 4 5 6 ; C = 3.A C =3 9 27 D = A.B D =1 32 7295、已知 若需要计算 t-1,1 ,取间隔为 0.01,试34sin23teyt计算出相对应的 y 值。 t = -1:0.01:1; y = sqrt(3)/2*exp(-4*t).*sin(4*sqrt(3)*t+pi/3) %注意要用点乘五、实验注意事项1、 注意区分大小写2、 注意数组、矩阵运算的不同之处六、思考题1、MATLAB 桌面环境有几种样式?Default:缺省的界面Command Windows Only:仅包含命令行窗体(Command Window)History and

6、Command Window: 包含两个窗体命令行窗体(Command Window)和命令历史窗体(Command History),两个窗体并列在界面中All Tapped:启动所有 MATLAB 常用的图形界面工具All but Command Window Minimized:Command Window 窗口显示,其他的窗口分别叠加在 MATLAB 窗体下2、如何使窗体浮动出来?又如何使窗体内嵌回 MATLAB 的界面中?在 MATLAB 默认的图形窗体环境下,单击命令行窗体左上角 按钮 ,就可以将 MATLAB 命令行窗体弹出执行“Desktop”菜单下的“Dock Current

7、 Directory”命令,可将命令行窗口重新嵌入到 MATLAB 的界面中7实验项目序号 2 MATLAB 运算基础(一)一、实验目的掌握 MATLAB 各种表达式的书写规则及常用函数的使用二、实验基本知识1、矩阵和向量的创建方法和访问方法1)创建方法 逐个输入向量的元素 利用运算符“:”语法:X = J:INC:K 使用函数 linspace 和 logspace语法:x = linspace(x1,x2,n),x = logspace (x1,x2,n)2)访问方法:利用向量或矩阵的索引来完成相应的操作。2、数据类型,以及操作不同数据类型数据的函数1)数据类型2)操作函数整数类型的运算函

8、数矩 阵 元 素 的 访 问 说 明 A(i,j) 访 问 矩 阵 A的 第 i行 第 j列 上 的 元 素 , 其 中 i和 j为 标 量 A(I,J) 访 问 由 向 量 I和 J指 定 的 矩 阵 A中 的 元 素 A(i,:) 访 问 矩 阵 A中 第 i行 的 所 有 元 素 A(:,j) 访 问 矩 阵 A中 第 j列 的 所 有 元 素 A(:) 访 问 矩 阵 A的 所 有 元 素 , 将 矩 阵 看 作 一 个 向 量 A(l) 使 用 单 下 标 的 方 式 访 问 矩 阵 元 素 , 其 中 l为 标 量 A(L) 访 问 由 向 量 L指 定 的 矩 阵 A的 元 素

9、, 向 量 L中 的 元 素 为 矩 阵元 素 的 单 下 标 数 值 数 据 类 型 说 明 字 节 数 取 值 范 围 double 双 精 度 数 据 类 型 8 sparse 稀 疏 矩 阵 数 据 类型 N/A single 单 精 度 数 据 类 型 4 uint8 无 符 号 8位 整 数 1 0 28- 1 uint16 无 符 号 16位 整 数 2 0 216- 1 uint32 无 符 号 32位 整 数 4 0 232- 1 uint64 无 符 号 64位 整 数 8 0 264- 1 int8 有 符 号 8位 整 数 1 - 27 28- 1 int16 有 符

10、号 16位 整 数 2 - 215 215- 1 int32 有 符 号 32位 整 数 4 - 231 231- 1 int64 有 符 号 64位 整 数 8 - 263 263- 1 函 数 说 明 bitand 数 据 位 “与 ”运 算 bitcmp 按 照 指 定 的 数 据 位 数 求 数 据 的 补 码 bitor 数 据 位 “或 ”操 作 bitmax 最 大 的 浮 点 整 数 数 值 , 一 般 为 2531=9 07 19 254 740 91 bitxor 数 据 位 “异 或 ”操 作 bitset 将 指 定 的 数 据 位 设 置 为 1 bitget 获 取

11、 指 定 的 数 据 位 数 值 bitshift 数 据 位 移 操 作 8创建逻辑类型数据的函数MATLAB 的逻辑运算MATLAB 的关系运算格式化字符三、主要仪器及耗材计算机四、实验内容和步骤1、已知 A=12 34 -4;34 7 87;3 65 7,B=1 3 -1;2 0 3;3 -2 7,求下列表达式的值:1)A+6B 和 A2-B+I(I 为单位矩阵)2)A*B 和 A.*B函 数 说 明 logical 将 任 意 类 型 的 数 组 转 变 成 为 逻 辑 类 型 数 组 , 其 中 , 非 零 元 素 为 真 , 零 元 素 为 假 True 产 生 逻 辑 真 值 数

12、 组 False 产 生 逻 辑 假 值 数 组 运 算 符 说 明 41 -45 65 5;32 5 0 32;6 -54 92 14; a = find(A=10%生成全为 2,个数为 10 的行矩阵 b=cumprod(a);%得到累乘量(如 21、2 2)等等10 c=sum(b)+1c =20476、用 reshape 指令生成下列矩阵,并取出方框内的数组元素。答案:a = 1:5 10:-1:6;b = 11:25;A = reshape(a,5,2); reshape(b,5,3)%生成矩阵 Ad1 = A(2,2:3)d2 = A(2:4,4)d3 = A(4:5,1:3)五、

13、实验注意事项不同的函数有不同的功能,同一函数又有不同的用法,注意正确使用各函数。六、思考题元素的单下标访问和全下标访问有何关联之处?实验项目序号 3 MATLAB 运算基础(二)一、实验目的掌握 MATLAB 中有关字符串、元胞、结构的函数的使用。二、实验基本知识有关字符串、元胞、结构的函数常用的字符串操作函数函 数 说 明 char 创 建 字 符 串 , 将 数 值 转 变 成 为 字 符 串 double 将 字 符 串 转 变 成 Unicode数 值 blanks 创 建 空 白 的 字 符 串 (由 空 格 组 成 ) deblank 将 字 符 串 尾 部 的 空 格 删 除 i

14、schar 判 断 变 量 是 否 是 字 符 类 型 strcat 水 平 组 合 字 符 串 , 构 成 更 长 的 字 符 向 量 strvcat 垂 直 组 合 字 符 串 , 构 成 字 符 串 矩 阵 strcmp 比 较 字 符 串 , 判 断 字 符 串 是 否 一 致 strncmp 比 较 字 符 串 前 n个 字 符 , 判 断 是 否 一 致 strcmpi 比 较 字 符 串 , 比 较 时 忽 略 字 符 的 大 小 写 strncmpi 比 较 字 符 串 前 n个 字 符 , 比 较 时 忽 略 字 符 的 大 小 写 findstr 在 较 长 的 字 符 串

15、 中 查 寻 较 短 的 字 符 串 出 现 的 索 引 strfind 在 第 一 个 字 符 串 中 查 寻 第 二 个 字 符 串 出 现 的 索 引 strjust 对 齐 排 列 字 符 串 strep 替 换 字 符 串 中 的 子 串 strmatch 查 询 匹 配 的 字 符 串 uper 将 字 符 串 的 字 符 都 转 变 成 为 大 写 字 符 lower 将 字 符 串 的 字 符 都 转 变 成 为 小 写 字 符 11数字和字符之间的转换函数不同数值之间的转换函数格式化字符元胞数组的操作函数函 数 说 明 num2str 将 数 字 转 变 成 为 字 符 串

16、int2str 将 整 数 转 变 成 为 字 符 串 mat2str 将 矩 阵 转 变 成 为 可 被 eval函 数 使 用 的 字 符 串 str2double 将 字 符 串 转 变 为 双 精 度 类 型 的 数 据 str2num 将 字 符 串 转 变 为 数 字 sprintf 格 式 化 输 出 数 据 到 命 令 行 窗 口 scanf 读 取 格 式 化 字 符 串 函 数 说 明 hex2num 将 十 六 进 制 整 数 字 符 串 转 变 成 为 双 精 度 数 据 hex2dec 将 十 六 进 制 整 数 字 符 串 转 变 成 为 十 进 制 整 数 dec

17、2hex 将 十 进 制 整 数 转 变 成 为 十 六 进 制 整 数 字 符 串 bin2dec 将 二 进 制 整 数 字 符 串 转 变 成 为 十 进 制 整 数 dec2bin 将 十 进 制 整 数 转 变 成 为 二 进 制 整 数 字 符 串 base2dec 将 指 定 数 制 类 型 的 数 字 字 符 串 转 变 成 为 十 进 制 整 数 dec2base 将 十 进 制 整 数 转 变 成 为 指 定 数 制 类 型 的 数 字 字 符 串 字 符 说 明 %c 显 示 内 容 为 单 一 的 字 符 %d 有 符 号 的 整 数 %e 科 学 技 术 法 , 使

18、用 小 写 的 字 符 e %E 科 学 技 术 法 , 使 用 大 写 的 字 符 E %f 浮 点 数 据 %g 不 定 , 在 %e或 者 %f之 间 选 择 一 种 形 式 %G 不 定 , 在 %E或 者 %f之 间 选 择 一 种 形 式 %o 八 进 制 表 示 %s 字 符 串 %u 无 符 号 的 整 数 %x 十 六 进 制 表 示 , 使 用 小 写 的 字 符 %X 十 六 进 制 表 示 , 使 用 大 写 的 字 符 函 数 说 明 cel 创 建 空 的 元 胞 数 组 celfun 为 元 胞 数 组 的 每 个 元 胞 执 行 指 定 的 函 数 celdis

19、p 显 示 所 有 元 胞 的 内 容 celplot 利 用 图 形 方 式 显 示 元 胞 数 组 cel2mat 将 元 胞 数 组 转 变 成 为 普 通 的 矩 阵 mat2cel 将 数 值 矩 阵 转 变 成 为 元 胞 数 组 num2cel 将 数 值 数 组 转 变 成 为 元 胞 数 组 deal 将 输 入 参 数 赋 值 给 输 出 cel2struct 将 元 胞 数 组 转 变 成 为 结 构 struct2cel 将 结 构 转 变 成 为 元 胞 数 组 iscel 判 断 输 入 是 否 为 元 胞 数 组 12在 cellfun 函数中可用的函数结构操作函

20、数三、主要仪器及耗材计算机四、实验内容和步骤1、求100,999之间能被 21 整除的数的个数(提示:先利用冒号表达式,再利用find 和 length 函数。 )答案: t = 100:999 i = find(rem(t,21)=0) length(i)ans =432、建立一个字符串向量,删除其中的大写字母(提示:利用 find 函数和空矩阵。 ) a = dadaAf函 数 说 明 isempty 若 元 胞 元 素 为 空 , 则 返 回 逻 辑 真 islogical 若 元 胞 元 素 为 逻 辑 类 型 , 则 返 回 逻 辑 真 isreal 若 元 胞 元 素 为 实 数

21、, 则 返 回 逻 辑 真 length 元 胞 元 素 的 长 度 ndims 元 胞 元 素 的 维 数 prodofsize 元 胞 元 素 包 含 的 元 素 个 数 函 数 说 明 struct 创 建 结 构 或 将 其 他 数 据 类 型 转 变 成 结 构 fieldnames 获 取 结 构 的 字 段 名 称 getfield 获 取 结 构 字 段 的 数 据 setfield 设 置 结 构 字 段 的 数 据 rmfield 删 除 结 构 的 指 定 字 段 isfield 判 断 给 定 的 字 符 串 是 否 为 结 构 的 字 段 名 称 istruct 判

22、断 给 定 的 数 据 对 象 是 否 为 结 构 类 型 oderfields 将 结 构 字 段 排 序 13 b = find(a=A5、建立矩阵 A 并回答有关问题A1,1=1;A1,2=Brenden;A2,1=reshape(1:9,3,3);A2,2=12,34,2;54,21,3;4,23,67;1) 如何使用访问的方式将 Brenden 改写成 BRENDEN? A1,2=upper(A1,2)A = 1 BRENDEN 3x3 double 3x3 cell2) 分别执行 A(3)=和 A3=后,A 的值各是多少?并说明原因。 A3=A = 1 3x3 double 3x3

23、 cell A(3)=A = 1 3x3 double 3x3 cell6、利用 MATLAB 提供的 rand 函数和圆整函数随机生成 43 整数矩阵 A,进行如下操作1)A 各列元素的平均值和中值平均值14 A_mean=mean(A) A_mean =0.5000 0.7500 0.7500中值 A_median=median(A)A_median =0.5000 1.0000 1.00002)A 的最大元素和最小元素及它们的位置最大值 A_max=max(max(A)A_max =1位置: x,y=find(A=A_max) A_maxlocal=x(1) y(1)最小值 A_min=

24、min(min(A)A_min =0位置: xx,yy=find(A=A_min)A_minlocal=xx(1) yy(1)3)求 A 的每行元素的和以及全部元素之和 A_rsum=sum(A,2)%行的和 A_sum=sum(sum(A)%全和4)分别对 A 的每列元素按升序、每行元素按降序排列 A_rsort=abs(sort(-A,2)五、实验注意事项字符串函数的使用细节;对元胞数组中的元胞的访问;结构数组的创建方法。六、思考题访问元胞数组的两种操作符“”和“() ”之间有什么不同?使用“”直接获取元胞数组的元胞内容使用“() ”直接访问元胞数组的元胞,获取的数据也是一个元胞数组。15

25、实验项目序号 4 MATLAB 循环结构程序设计一、实验目的1、掌握建立和执行 M 文件的方法;2、掌握利用 for 语句和 while 语句实现循环结构的方法。二、实验基本知识MATLAB 的 M 语言文件是纯文本格式的文件,MATLAB 也提供了一个编辑器,叫作meditor,它也是系统默认的 M 文件编辑器。运行 meditor 的方法非常简单,在MATLAB 命令行窗口中键入下面的指令就可以打开 meditor: edit这时 MATLAB 将启动 meditor,然后创建一个未命名的空白文件。这时用户就可以直接在编辑器中键入 MATLAB 指令,开发 M 语言文件了。M 语言文件可以

26、分为两类,其中一类是脚本文件,另外一类叫作函数文件。脚本文件是最简单的一种 M 语言文件。所谓脚本文件,就是由一系列的 MATLAB 指令和命令组成的纯文本格式的 M 文件,执行脚本文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。脚本文件没有输入参数,也没有输出参数,执行起来就像早期的 DOS 操作系统的批处理文件一样,而脚本文件处理的数据或者变量必须在 MATLAB 的公共工作空间中。 脚本文件中常用的 MATLAB 指令指 令 说 明 pause 暂 停 当 前 M文 件 的 运 行 , 按 任 意 键 继 续 input 等 待 用 户 输 入 keyboard 暂 停

27、当 前 M文 件 的 运 行 , 并 将 程 序 控 制 权 交 还 给 MATLAB命 令 行 , 这 时可 以 正 常 使 用 命 令 行 , 直 到 键 入 “return”并 按 回 车 键 后 , M文 件 才 继 续 运 行 return 返 回 当 前 的 函 数 或 者 命 令 行 16程序流程控制语句:1、for 循环结构语法:for i初值:增量:终值 语句 1 语句 n end 说明:1)i初值:终值,则增量为 1。 2)初值、增量、终值可正可负,可以是整数或小数,只须符合数学逻辑。2、while 循环结构 语法:while 逻辑表达式 循环体语句 end 说明:1)wh

28、iIe 结构依据逻辑表达式的值判断是否执行循环体语勾。若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。若表达式的值为假,则程序执行 end 之后的语句。2)为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位置加break 语句、以便程序能正常执行。 (执行循环体的次数不确定;每一次执行循环体后,一定会改变 while 后面所跟关系式的值。 ) 3)while 循环也可以嵌套、其结构如下: while 逻辑表达式 1 循环体语句 1 while 逻辑表达式 2 循环体语句 2 end 循环体语句 3 end 三、主要仪器及耗材计算机四、实验内容和步骤1、分别使用

29、 for 循环语句和 while 循环语句找出最小的 n 值,使得 n!10100,并求出 n!。要求显示的结果为n=70n!=1.197857e+1001e100或1770!=1.197857e+1001e100程序 for:s =1;for n=1:100s=s*n;if(s10100)break;endendstr1=n=,num2str(n);str2=n!=,num2str(s);disp(str1)disp(str2)程序 while:n=1;s=1;while(s3求 f1 f50中:1)最大值和最小值及它们的位置,各数之和(最大值给变量 MAX,其位置给变量 x,最小值给变量

30、MIN,其位置给变量 y,各数之和给变量 SUM) 。程序:f(1)=1;f(2)=0;f(3)=1;for n=4:50f(n)=f(n-1)-2*f(n-2)+f(n-3);endMAX,x=max(f)%?18MIN,y=min(f)SUM=sum(f)2)正数、零、负数的个数(依次赋值给变量 positive,zero,negative) 。将MAX,x=max(f)和之后的语句换为:positive=length(find(f0)zero=length(find(f=0)negative=length(find(f10000break;endenddisp(i=,num2str(i)

31、disp(a(i)=,num2str(a(i)五、实验注意事项1、for 语句和 while 语句的应用场合2、注意输出格式的要求六、思考题请思考下列两段程序及其运行结果,说明原因。1) clear (2)clearfor i=1:10; for i=1:10;x(i)=i.2; x(i)=i.2;end endx x(i)19实验项目序号 5 MATLAB 选择结构程序设计一、实验目的1、掌握建立和执行 M 文件的方法;2、掌握利用 if 语句和 switch 语句实现选择结构的方法。二、实验基本知识MATLAB 的 M 语言文件是纯文本格式的文件,MATLAB 也提供了一个编辑器,叫作me

32、ditor,它也是系统默认的 M 文件编辑器。运行 meditor 的方法非常简单,在MATLAB 命令行窗口中键入下面的指令就可以打开 meditor: edit这时 MATLAB 将启动 meditor,然后创建一个未命名的空白文件。这时用户就可以直接在编辑器中键入 MATLAB 指令,开发 M 语言文件了。M 语言文件可以分为两类,其中一类是脚本文件,另外一类叫作函数文件。脚本文件是最简单的一种 M 语言文件。所谓脚本文件,就是由一系列的 MATLAB 指令和命令组成的纯文本格式的 M 文件,执行脚本文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。脚本文件没有输入参数,也

33、没有输出参数,执行起来就像早期的 DOS 操作系统的批处理文件一样,而脚本文件处理的数据或者变量必须在 MATLAB 的公共工作空间中。脚本文件中常用的 MATLAB 指令指 令 说 明 pause 暂 停 当 前 M文 件 的 运 行 , 按 任 意 键 继 续 input 等 待 用 户 输 入 keyboard 暂 停 当 前 M文 件 的 运 行 , 并 将 程 序 控 制 权 交 还 给 MATLAB命 令 行 , 这 时可 以 正 常 使 用 命 令 行 , 直 到 键 入 “return”并 按 回 车 键 后 , M文 件 才 继 续 运 行 return 返 回 当 前 的

34、函 数 或 者 命 令 行 20程序流程控制语句: 1、if-else-end 分支结构语法:if 表达式 1 语句 1 else if 表达式 2(可选) 语句 2 else(可选) 语句 3 end end 说明:1)if 结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出 if 结构。2)else if 表达式 2 与 else 为可选项,这两条语句可依据具体情况取舍。3)注意:每一个 if 都对应一个 end,即有几个 if,记就应有几个 end。2、switch-case 结构语法:switch 表达式case 常量表达式 1 语句组 1 case 常量表达式

35、2 语句组 2 otherwise 语句组 n end 说明:1)switch 后面的表达式可以是任何类型,如数字、字符串等。2)当表达式的值与 case 后面常量表达式的值相等时,就执行这个 case 后面的语句组如果所有的常量表达式的值都与这个表达式的值不相等时,则执行 otherwise 后的执行语句。三、主要仪器及耗材计算机四、实验内容和步骤211、输入一个百分制成绩,要求输出成绩等级 A、B、C、D、E。其中 90 分100 分为A,80 分89 分为 B,70 分79 为 C,60 分69 分为 D,60 分以下为 E。要求:1)分别用 if 语句和 switch 语句实现2)对不

36、合理的成绩应输出出错信息“输入的成绩不合理” (若成绩出现小数,则只能是“.5” )程序 switch:score=input(:); if rem(score,0.5)=0switch score case num2cell(90:0.5:100) disp( A)case num2cell(80:0.5:89) disp( B) case num2cell(70:0.5:79) disp( C) case num2cell(60:0.5:69) disp( D) case num2cell(0:0.5:59.5)disp( E) otherwisedisp()end elsedisp(0.

37、5)end程序 if: 2、x=input(?:); 3、if rem(x,0.5)=04、if (x=90) 5、 disp(A) 6、elseif (x=80 y=round(rand(1)*100);disp(x=,num2str(x);disp(y=,num2str(y);A=input(请输入一个运算符号:,s); %书上 114 页有说明switch(A)case +a=x+y; disp(a=x+y=,num2str(a);case -a=x-y;disp(a=x-y=,num2str(a);case *a=x*y;disp(a=x*y=,num2str(a);case /a=x

38、/y;disp(a=x/y=,num2str(a);end3、求下列分段函数的值 26,051,y且 -3=0elseif a(i) edit这时 MATLAB 将启动 meditor,然后创建一个未命名的空白文件。24这时用户就可以直接在编辑器中键入 MATLAB 指令,开发 M 语言文件了。M 语言文件可以分为两类,其中一类是脚本文件,另外一类叫作函数文件。M 函数文件和脚本文件不同,函数文件不仅有自己特殊的文件格式,不同的函数还分别具有自己的工作空间。同其他高级语言类似,M 函数文件也有局部变量和全局变量。函数文件的结构和编写方法:函数只能在函数体内对变量进行操作,也就是只能访问函数本身

39、工作空间中的变量。M 函数文件的结构:(1) 函数定义行(function) (2) H1 行(函数帮助文本的第一行) (3) 函数帮助文本(4) 函数体(5) 注释函数文件编写后,保存时,其文件名必须与函数名相同。注意:函数名不要与MATLAB 自身的函数命令相同。 三、主要仪器及耗材计算机四、实验内容和步骤1、编写一个函数文件 chengji.m,用于求两个矩阵的乘积和点乘,然后在命令行窗口中调用该函数(提示:使用 varargout 函数) ,要求:1)当两矩阵是尺寸相同的方阵时,返回它们的乘积和点乘。2)当两矩阵不是尺寸相同的方阵时,则根据它们的尺寸,分别进行乘积或点乘。3)当两矩阵的

40、尺寸不能满足乘积或点乘的要求时,则提示“这两个矩阵不能乘” 。25程序为:function varargout=chengji(a,b)x,y=size(a);xx,yy=size(b);if (xx=yyvarargout2=a.*b;elseif (x=xxdisp()varargout2=0;elseif (x=yyvarargout2=b*a;elseif (x=yy|xx=y)tryvarargout1=a*b;disp()varargout2=0;catchvarargout1=b*a;disp()varargout2=0;endelseerror()end2、编写一函数 qiuh

41、e.m,实现 sum(A)的功能,其中 A 为矩阵。程序为:function y=qiuhe(a)y=;x,yy=size(a);if x=1s=0;for k=1:yys=s+a(1,k);endy=s;elsefor j=1:yys=0;for i=1:xs=s+a(i,j);26endy(1,j)=s;endend3、编写一个阶乘函数 jiecheng.m,然后在试验三的编程题“分别使用 for 和 while语句找出最小的 n 值,使得 n!10100,并求出 n!”程序中调用该函数。程序:function s=jiecheng(n)s=1;if n=0s=1;elseif n0err

42、or(n0)elsefor i=1:ns=s*i;endend五、实验注意事项1、注意脚本文件和函数文件的区别2、函数文件的调用六、思考题已知一函数文件如下:function y=temf(a)if length(a)2y=a;elsey=max(a)-min(a);end则在命令窗口执行有:temf(23 45 67 89)= 66 temf(78)= 78 实验项目序号 7 数据插值与曲线拟合实验27一、实验目的1、掌握数据统计和分析的方法;2、掌握数据插值与曲线拟合的方法及其应用。二、实验基本知识1、数据插值运算MATLAB 提供的插值计算函数函数 说明 函数 说明interp1 一维插

43、值(数值查表) griddata3 三维数据网格的超表面数据插值interp1q 一维快速插值(数值查表) griddatan 多维数据网格的超表面数据插值interp2 二维插值(数值查表) mkpp 产生分段多项式interp3 三维插值(数值查表) pchip 分段的厄密多项式interpn N 维插值(数值查表) ppval 计算分段多项式的数值interpft 使用 FFT 算法的一维插值 spline 三次杨条插值griddata 二维数据网格的表面数据插值 unmkpp 分段多项式的细节1)一维插值:在 MATLAB 中实现一维插值的函数是 interp1。调用格式为:Yi=in

44、terp1(X,Y,Xi,method) X 和 Y 为已知的原始数据,分别描述采样点和采样值; Xi 为需要计算的插值点,是一个向量或标量; Yi 是插值结果; X 和 Y,Xi 和 Yi 若都为向量,则等长,若 Y 和 Yi 为矩阵,则length(X) and size(Y,1) must be the same. method 是插值方法,允许的取值有多种; 若进行插值运算时,Xi 的取值超过了 X 的范围,则需要进行外插值运算:Yi=interp1(X,Y,Xi,method,extrap)。2)二维插值:在 MATLAB 中实现二维插值的函数是 interp2。调用格式为:Zi=i

45、nterp2(X,Y,Z,Xi,Yi,method) X 和 Y 为原始数据,是两个等长的已知向量,分别描述两个参数的采样点; Z 是与参数采样点对应的函数值; Xi ,Yi 是两个向量或标量,描述欲插值的点; Zi 是根据相应的插值方法得到的插值结果; method 是插值方法,允许的取值有多种,与一维插值函数相同; X,Y,Z 也可以是矩阵的形式;28 若进行插值运算时,Xi 的取值超过了 X 的范围,则需要进行外插值运算:Zi=interp2(X,Y,Z,Xi,Yi,method,extrap)。2、曲线拟合曲线拟合的目的是用一个较简单的函数去逼近一个复杂的或未知的函数。利用MATLAB

46、 进行曲线拟合主要有两种方法:回归法拟合和多项式拟合。1)回归法拟合主要是使用 MATLAB 的左除运算来寻找曲线拟合解析函数的系数。2)多项式拟合在 MATLAB 中进行多项式拟合主要使用的函数有: polyfit:用来进行拟合计算P=polyfit(x,y,n)x 和 y 为参与曲线拟合的原始数据,n 为进行拟合计算的多项式次数,函数的返回值是多项式的系数,即函数的运算结果为多项式的系数向量 polyval:用来计算多项式的数值y=polyval(p,x)p 为多项式的系数,x 是变量的数值,得到的结果就是函数的数值向量。三、主要仪器及耗材计算机四、实验内容和步骤1.已知原始数据 ,插值点

47、为)5/exp(*).sin(*4:10ypix,试用四种不同的插值方法进行插值,并在一副图中绘出四种ixi:3.插值曲线。程序:x=0:1:4*pi;y=sin(x).*exp(-x/5);xi=0:0.3:4*pi;y1=interp1(x,y,xi,nearset);y2=interp1(x,y,xi,linear);y3=interp1(x,y,xi,spline);y4=interp1(x,y,xi,cubic);plot(x,y,-m,xi,y1,*r,xi,y2,ok,xi,y3,b,xi,y4,+g)legend(-,)title( ,FontName,FontSize,20)xlabel(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报