matlab第五章
MatLab中文版(word版)第五章
目录第五章自定义函数 (1)5.1 MA TLAB函数简介 (1)5.2 在MA TLAB中传递变量:按值传递机制 (6)例5.3 (7)5.3 选择性参数 (14)测试5.1 (16)5.4 用全局内存分享数据 (17)例5.4 (18)5.5 在函数调用两次之间本地数据的存储 (22)例5.5 运行平均数 (22)5.6 函数的函数(function functions), (26)例5.6 (27)5.7 子函数和私有函数 (29)5.8 总结 (29)5.9 练习 (30)5.1 (30)5.2 (30)5.3 (31)5.4 (31)5.5 (31)5.6 (31)5.7 (31)5.8 (31)5.9 (31)5.10 (31)5.11 (31)5.12 (32)5.13 (32)5.14 (32)5.15 (33)5.16 (33)5.17 (33)5.18 (34)5.19 (35)5.20 (35)5.21 (35)5.22 (35)5.23 (36)5.24 (36)5.25 (37)5.26 (37)第五章自定义函数在第三章中,我们强调了好的编程习惯的重要性。
我们进行开发的基本手段是自上而下的编程方法。
在自上而下的编程方法中,它开始于对所要解决问题的精确陈述和定义输入量和输出量。
下一步,我们在大面上进行算法的描述,然后把算法分解成一个一个的子问题。
再然后,程序员把这一个个子问题进行再一次的分解,直到分解成简单而且能够清晰理解的伪代码。
最后把伪代码转化为MATLAB代码。
尽管我们在前面的例子中,按照上面的步骤进行了编程。
但是产生的结果在某种程度上还是受限制的。
因为我们必须把每一个子问题产生的MATLAB代码嵌入到一个单独的大程序中。
在嵌入之前我们无法对每一次子问题的代码进行独立地验证和测试。
幸运的是,MATLAB有一个专门的机制,在建立最终的程序之前用于独立地开发与调试每一个子程序。
第五章-matlab绘图分解ppt课件
对应列元素为横、纵坐标分别绘制曲线, 曲线条数等于矩阵的列数。例5-3 分析下列程序绘制的曲线。
10/13/2023 8
绘图函数。调用格式为:plotyy(x1,y1,x2,y2)其中x1,y1对应一条曲线,x2,y2对应另一 条曲线。横坐标的标度相同,纵坐标有两 个,左纵坐标用于x1,y1数据对,右纵坐标 用于x2,y2数据对。
10/13/2023 9
title(图形名称)xlabel(x轴说明)ylabel(y轴说明)text(x,y,图形说明)legend(图例1,图例2,…)15
10/13/2023
数学符号及公式等内容。例如, text(0.3,0.5,‘sin({\omega}t+{\beta})’)将得到 标注效果sin(ωt+β)。例5-7 在0≤x≤2冗区间内,绘制曲线y1=2e-0.5x 和y2=cos(4πx),并给图形添加图形标注
on/off命令控制是加还是不加边框线,不带 参数的box命令在两种状态之间进行切换。例5-8 在同一坐标中,可以绘制3个同心圆,并加坐标控制。
10/13/2023 18
fplot(fname,lims,tol,选项)其中,fname为函数名,以字符串形式出现, lims为x,y的取值范围,tol为相对允许误差, 其系统默认值为2e-3 。选项定义与plot函数 相同。
10/13/2023 20
10/13/2023 16
时,则绘制出多根不同颜色的曲线。曲线 条数等于y矩阵的另一维数,x被作为这些 曲线共同的横坐标。(2)当x,y是同维矩阵时,则以x,y对应列元 素为横、纵坐标分别绘制曲线,曲线条数 等于矩阵的列数。
10/13/2023 5
划线,“y:d”表示黄色虚线并用菱形符标记
matlab第五章
表5-3列出了数据标记点的标记符号。
表5-2 颜色和线型标记
符号
c m y r g b
表示的颜色
青色(cyan)
符号
-
代表的线型
实线(缺省值) 短划线 点连线(虚线) 点划线 不画线
品 红 色 ( magenta ) -黄色(yellow) 红色(red) 绿色(green) 蓝色(blue) : -. none
例1 用图形保持功能在同一坐标内绘制曲线 及其包络线,并加网格线。 程序如下:
y 2e 0.5 x sin( 2x)
x=(0:pi/100:2*pi)'; y1=2*exp(-0.5*x)*[1,-1];y2=2*exp(0.5*x).*sin(2*pi*x); plot(x,y1,'b:'); axis([0,2*pi,-2,2]); %设置坐标 hold on; %设置图形保持状态 plot(x,y2,'k'); grid on; %加网格线 box off; %不加坐标边框 hold off; %关闭图形保持
§5-2 二维图形的绘制
1、plot函数的调用格式 调用格式1:plot(x,y) 功能:绘制二元组x、y 的曲线图形。 这里X为横坐标,Y为纵坐标。 ⑴若x、y是同规模的向量,则绘制一条曲线。
⑵若x是向量而y是矩阵,则绘制多条曲线,它们具有相同的 横坐标数据。 ⑶若x、y都是矩阵,则以它们对应的列构成二元组来绘制多 条曲线。
>> x=0:pi/100:2*pi; >> y=sin(x); >> plot(x,y,'-.mo')
>> axis([-1,11,-2,2]); %设置X轴和Y轴的最大值和最小值
MATLAB入门第五章
三、二维平面图形的绘制
1 基本图形函数
参考page160表5-2 绘图参数表。
绘图参数表
图形颜 色定制
字符 b c g k m r w y
颜色 蓝色 青色 绿色 黑色 洋红色 红色 白色 黄色
绘图参数表 字符 图形线型定制 : 线型 实线 点线
-. --
点划线 虚线
绘图参数表
字符 . o 点型 点号 圆圈号
>> set(1,'name','hello')
第五章 MATLAB图形处理
二、图形窗口
2 图形窗口的创建与控制
(2) 多重子图窗口的创建 函数命令:subplot 调用格式:h=subplot(m,n,p)
该命令将图形窗口分割为多个子图窗口。 subplot(m,n,p) 将图形窗口分为m×n个子图窗口。 m为行数,n为列数;p为子图序号
2 图形修饰函数 例题5-19(page164):给图形加入网格和标注。
第五章 MATLAB图形处理
三、二维平面图形的绘制
3 图形的比较显示
问题: 用什么方法可以把图形进行比较显示?
第五章 MATLAB图形处理
三、二维平面图形的绘制
3 图形的比较显示
方法一:用同一x,以及不同y进行绘制; 方法二:用hold on(/off)命令; 方法三:采用subplot命令。
第五章 MATLAB图形处理
三、二维平面图形的绘制
1 基本图形函数
(3)plot(x,y1,x,y2,…) * 若x,y均为同维向量时,以公共的x元素为横坐 标值,以y1,y2,„元素为纵坐标值绘制多条曲线。 * x,y1,y2均为矩阵时,情况比较复杂,请大家 在实验课上自己演练验证。
MATLAB课件-第五章MATLAB程序设计
程序如下: price=input('请输入商品价格'); 请输入商品价格1000 switch fix(price/100) case {0,1} %价格小于200 rate=0; case {2,3,4} %价格大于等于200但小于500 price = rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rate=5/100; 920 case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格
3.try语句 语句格式为: try 语句组1 catch 语句组2 end try语句先试探性执行语句组1,如果语句组1在执行 过程中出现错误,则将错误信息赋给保留的lasterr 变量,并转去执行语句组2。
例5-6 矩阵乘法运算要求两矩阵的维数相容,否则会出 错。先求两矩阵的乘积,若出错,则自动转去求两矩 阵的点乘。 程序如下: A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12]; C= try C=A*B; catch 7 16 27 C=A.*B; 40 55 72 end C ans = lasterr %显示出错原因
2.switch语句 switch语句根据表达式的取值不同,分别执行不同的语句,其语 句格式为: switch 表达式 当表达式的值等于表达式1 的值时,执行语句组1,当 case 表达式1 表达式的值等于表达式2的 语句组1 值时,执行语句组2,…, case 表达式2 当表达式的值等于表达式m 语句组2 的值时,执行语句组m,当 …… 表达式的值不等于case所列 的表达式的值时,执行语句 case 表达式m 组n。当任意一个分支的语 语句组m 句执行完后,直接执行 otherwise switch语句的下一句。 语句组n end
MATLAB讲稿——第五章
例:对结构体数据的设置需采用setfield指 令, >> student=setfield(student,{2},'name','li wei') %将结构体中第二条记录域名为 ‘name’的内容改为‘li wei’ >> FC=getfield(student,{2},'name') % 显示结构体中第二条记录域名为‘name’的内 容已更改
>> student %显示结构体 student = 1x4 struct array with fields: name number
二、结构体数组的调用和设置 由于结构体数组的域是存放数据的场所, 因此,在调用结构体和设置结构体数组中数 据的前提是“事先知道域名”。用户可以直 接在MATLAB命令窗口中键入结构体名称来查 找域名,亦可以采用提供的fieldnames指令 来获得域名。一旦有了域名,MATLAB就可以 利用getfield和setfield指令实现对结构体 数据的调用和设置。
5.3.3 结构体数组的扩充与收缩 >> student(5).number='609514'; >> student(5).name='han yi'; >> student >> student(:,4)=[] %又收缩为 (1×4)的结构体
四、 域的增添和删除 1、增添域操作 例 : >> student(1).Average_Score=79.8;student(1).List _number=3; %在数组中的任意记录上进行域的增 添操作,其影响遍及整个结构体。 >> student 2、删除域操作 用户必须使用rmfield命令对结构体的域进行删 减。 例:>> student=rmfield(student,'List_number')
第五章 Matlab课件
5.2.3 循环结构 循环是指按照给定的条件,重复执行指定的语句,这是 一种十分重要的程序结构。
1.for语句 for语句的格式为: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 其中表达式1的值为循环变量的初值,表达式2的值为步长, 表达式3的值为循环变量的终值。步长为1时,表达式2可以 省略。
2.switch语句 switch语句根据表达式的取值不同,分别执行不同的语 句,其语句格式为: switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 …… case 表达式m 语句组m otherwise 语句组n end
当表达式的值等于表达式1的值时,执行语句组1,当表达 式的值等于表达式2的值时,执行语句组2,…,当表达式的 值等于表达式m的值时,执行语句组m,当表达式的值不等 于case所列的表达式的值时,执行语句组n。当任意一个分 支的语句执行完后,直接执行switch语句的下一句。
程序如下: price=input('请输入商品价格) case {0,1} %价格小于200 rate=0; case {2,3,4} %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rate=5/100; case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格
3.try语句 语句格式为: try 语句组1 catch 语句组2 end try语句先试探性执行语句组1,如果语句组1在执行过程中 出现错误,则将错误信息赋给保留的lasterr变量,并转去执 行语句组2。
MATLAB第五章
例题开讲
t=linspace(0,2*pi,100) y=2*exp(-t/2).*sin(2*pi*t) plot(t,y)
2 1.5 1
0.5
0
-0.5
-1
-1.5
0
1
2
3
4
5
6
7
例题开讲
t=(0:pi/50:2*pi)'; k=0.4:0.1:1; y=cos(t)*k; plot(t,y) 问题?
2.位图文件的写入函数
imwrite(x,’test.bmp’);
3、显示图像image(x); 因为在MATLAB中unit8型数据不能直接运 算,所以如果需要运算的话,必须转换数 据类型。 x=double(x);
4.动画的制作
Getframe 截取每一幅画面信息而形 成一个很大的列向量。 moviein(n) 初始化建立一个足够大的n 列矩阵用来保存n幅画面的数据,以备播放。 movie(m,n) 播放由矩阵m所定义的画 面n次,默认时播放一次。
举例
1
x=0:1/3000:1; y=cos(tan(pi*x)); subplot(2,1,1) plot(x,y) subplot(2,1,2) plot(x,y) axis([0.4,0.6,-1,1]);
0 -0.5 -1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 1 0.5 0 -0.5 -1 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54
pie(x,c)
x=[5 6 7 4 1 ]; pie(x)
x:给出数据,并自动统计其所占的比例。 c:给出所切的块的特性(0:为块间无间隔, 1:为块间有间隔)
MATLAB学习课件第五章
4
5.1 概述
根据程序运行方式的不同,可以将MATLAB程序设计分为
两种方式:
一种是在命令窗口中逐条输入命令,另一种是将相关
的命令存储在一个M文件中。
前者称为命令行方式,又称为指令驱动模式。后者称
为M文件的程序运行方式。
命令行方式 M文件编程方式 命令逐条解释执行 自动一次执行完文件中所有命令 简单,直观 不直观 速度慢,执行过程不能保留, 速度快,可以重复执行文件 不能重复执行
25
2、while语句
while语句的一般格式为: while 表达式 循环体语句 end while语句为条件循环语句,循环次数不确定,只要循环条件
表达式的结果非零,语句体就重复执行,直到循环条件表达 式的结果为零,则跳出循环
26
5.3.4 程序流的控制
与控制程序执行过程相关的语句主要有break语句、
5.3 MATLAB程序结构
MATLAB程序的控制结构有3种:
顺序结构、选择结构和循环结构。
按照程序设计的观点, 任何算法功能都可以通过由程序模
块组成的三种基本程序结构的组合来实现。
11
5.3.1 顺序结构
顺序结构是指程序按程序语句或模块在执行流中的顺序逐
个执行,直到执行到程序的最后一个语句。
函数式M文件 接受输入参数,有返回值 文件中定义变量为局部变量, 文件执行完毕时,局部变量 清除,不保留在工作空间
要通过函数调用的方式调用 才能运行 用户需要自定义某种具体算 法时使用
5.2.3 M文件操作
对M文件常用的操作有:打开M文件、新建M文件、编辑
M文件、保存M文件和运行M文件等。
10
例5.8:判断读取矩阵是否正确。 解:程序如下 n=4; a=magic(3) try a_n=a(n,:), %取a的第n 行元素 catch a_n=a(end, : ), %如取a的第n 行出错,则改取a的最后一行 end lasterr %显示出错原因 执行结果如下; a= 8 1 6 3 5 7 4 9 2 a_n = 9 2 ans = Attempted to access a(4,:); index out of bounds because size(a)=[3,3].
数学实验MATLAB第五章
学习方法与建议
学习方法
通过理论学习和实践操作相结合的方式,深入理解MATLAB高级编程技术的原 理和应用。
建议
在学习本章之前,读者应该已经具备一定的MATLAB基础知识和编程经验。同 时,建议读者在学习过程中多进行实践操作,通过编写代码来加深对知识点的 理解和掌握。
02 MATLAB基础知识回顾
数学实验matlab第五章
目 录
• 第五章概述 • MATLAB基础知识回顾 • 数组与矩阵操作 • 数值计算与数据分析 • 程序设计与优化 • 综合应用与案例分析
01 第五章概述
章节内容与目标
内容
介绍MATLAB中的高级编程技术 ,包括脚本和函数编程、数据结 构和算法、面向对象编程等。
目标
通过学习本章,读者应该能够熟 练掌握MATLAB的高级编程技术 ,并能够灵活运用这些技术解决 复杂的数学问题。
运算符与函数
运算符
详细讲解MATLAB中的运算符, 包括算术运算符、关系运算符、 逻辑运算符等。同时介绍运算符
的优先级和结合性。
函数
阐述函数的概念,以及如何在 MATLAB中定义和使用函数。同时 介绍函数的输入和输出参数,以及 函数的返回值。
常用函数
介绍MATLAB中常用的函数,包括 数学函数、字符串处理函数、文件 操作函数等。同时给出函数的语法 和使用示例。
矩阵的乘法
按照矩阵乘法的规则进行运算 ,结果矩阵的维数可能发生变
化。
矩阵的转置
将矩阵的行和列互换,得到转 置矩阵。
矩阵的逆
对于方阵,若其逆矩阵存在, 则可以通过特定的运算求得逆
矩阵。
数组与矩阵的应用举例
线性方程组求解
数据分析与处理
Matlab 教程第五章
2500 2000 1500 1000 500 0 0 0.2 0.4 0.6 0.8 1
2004
1 2 3 4 5 6 7 8 9 10
4/18
例5.2 相遇问题: 甲、乙两船在24小时内独立地随机到 达码头. 设两船到达码头时刻分别为 X 和 Y
均匀分布随机变量 X ~ U(0 , 24), Y ~ U(0 , 24) 如果甲船到达码头后停留2小时,乙船到达码头后停留 1小时.问两船相遇的概率有多大? Y
function F=shipmeet(N) if nargin==0,N=2000;end P=24*rand(2,N); X=P(1,:);Y= P(2,:); I=find(X<=Y&Y<=X+2); J=find(Y<=X&X<=Y+1); F=(length(I)+length(J))/N plot(X,Y,'b.') ,hold on
⑦
8/18
记
Y = X1 + X2 + X3 + X4 + X5 + X6
Y ~ B( n, p )
nk
Y 服从n=6的二项分布
k 6 k
p=0.5
k =0,1,2,…,6 二项分布概率计算函数: binopdf(x,n,p) x 是n重贝努里试验中事件A出现的次数. %计算Galton试验板分布律 n=6;x=0:n; Y=binopdf(x,n,0.5) bar(x,Y) ans =
0.01561 0
P {Y k } C p ( 1 p )
0
1
2
3
4
5
6
0.3125
MATLAB-第五章
例如: factor: 因式分解
>>factor(x^3-6*x^2+11*x-6)
第五章 MATLAB的符号计算
五、符号运算
1 初等代数运算 (3)符号表达式化简(page48,表3-4)
例如: simplify: 对表达式化简
>>simplify(x^3-6*x^2+11*x-6) >>simplify(sin(x)^2 + cos(x)^2) >>simplify(exp(c*log(sqrt(a+b)))) >>simplify((x^2+5*x+6)/(x+2)) >>simplify(sqrt(16))
第五章 MATLAB的符号计算
三、符号表达式的定义
建立符号表达式有以下2种方法: (1)用sym函数建立符号表达式。 >> f=sym('a*x^2+b*x+c'); (2) 使用已经定义的符号变量组成符号表达式。 >> syms x y a b c >> f=a*x^2+b*x+c (?)利用单引号来生成符号表达式。 >> f='a*x^2+b*x+c'
第五章 MATLAB的符号计算
五、符号运算
1 初等代数运算 (2)符号表达式的加减乘除幂次方运算
例如: >> f1=sym('1/(a-b)'); >> f2=sym('2*a/(a+b)'); >> f3=sym('(a+1)*(b-1)*(a-b)');
Matlab第五章答案
第一题(1)a=[1 9 8;7 2 5;3 -2 7] %产生矩阵det(a) %检验是否可逆ans=-442,非0,可逆div(a) %求逆矩阵(2)b=[1 0 -7 5;0 -26 7 2;7 4 3 5;8 -3 2 15]det(b)div(b)第二题(1)A=[1 2 3;2 2 5;3 5 1];B=[11 12 31];X=B/A(2) A=[3 1 0 5;0 6 7 3;0 4 3 0;2 -1 2 6];B=[2 4 7 8];X=B/A第三题(1)t=[1 2 3 4 5 6 7 8 9 10]';y=[4.842 4.362 3.754 3.368 3.169 3.083 3.034 3.016 3.012 3.005]';A=[ones(size(t)) exp(-t)];C=A\yT=[0:.1:10]';Y=[ones(size(T)) exp(-T)]*C;plot(T,Y,'-',t,y,'o')title( '采用y(t)≈c1+c2e–t的拟合' )xlabel('\itt'), ylabel('\ity')(2)t=[0 .3 .8 1.1 1.6 2.3]';y=[.82 .72 .63 .60 .55 .50]';A=[ones(size(t)) t.*exp(-t)];C=A\y;T=[0:.1:2.5]';Y=[ones(size(T)) T.*exp(-T)]*C;plot(T,Y,'-',t,y,'o')title('采用y(t)≈d1+d2te–t拟合')xlabel('\itt'), ylabel('\ity')第四题A=[11.59 12.81 15.66; 15.2 4.18 13.61; 10.597.59 9.22];[L,U]=lu(A)[Q R]=qr(A)B=[16.00 4.41 -10.37 -21.61; 0.88 -20.04 12.86 8.56; -1.43 10.71 18.81 -5.99; -12.48 24.35-23.9 10.34];[C,D]=lu(B)[E F]=qr(B)第五题(1)A=[5 -5 -6;3 -2 5;2 -1 -4];x0=[1;-4;5];X=[];for t=0:.01:1X=[X expm(t*A)*x0];endplot3(X(1,:),X(2,:),X(3,:),'-o')grid on(2)A=[1 2 -3 1;3 0 1 -2;1 -2 0 5;2 3 0 1];x0=[1;-1;2;1];X=[];for t=0:.01:1X=[X expm(t*A)*x0];endplot3(X(1,:),X(2,:),X(3,:),'-o')grid on第六题(1)A=[11.59 12.81 15.66; 15.2 4.18 13.61;10.59 7.59 9.22];lambda=eig(A)[V,D]=eig(A)(2)B=[16.00 4.41 -10.37 -21.61; 0.88 -20.04 12.86 8.56; -1.43 10.71 18.81 -5.99; -12.48 24.35 -23.9 10.34];lambda=eig(B)[V,D]=eig(B)第七题(1)x=[1 2 3 4 5 6 7 8 9 10];y=[15.0 39.5 66.0 85.5 89.0 67.5 12.0 -86.4 -236.9 -448.4];p=polyfit(x,y,2);x2=1:.1:10;y2=polyval(p,x2);figure(1)plot(x,y,'o',x2,y2)grid ontitle('二阶多项式曲线拟合')(2)x=[1 2 3 4 5 6 7 8 9 10];y=[15.0 39.5 66.0 85.5 89.0 67.5 12.0 -86.4 -236.9 -448.4];p=polyfit(x,y,3);x2=1:.1:10;y2=polyval(p,x2);figure(1)plot(x,y,'o',x2,y2)grid ontitle('三阶多项式曲线拟合')第八题p1=[1,-2-3,4,2];p2=[1,-7,5,31,-30];p3=[1,-1,-25,25];p4=[-2,3,1,5,8,0];[L1,U1]=lu(p1)r1=roots(p1)[L2,U2]=lu(p2)r2=roots(p2)[L3,U3]=lu(p3)r3=roots(p3)[L4,U4]=lu(p4)r4=roots(p4)第九题p1=[1,-2-3,4,2];p2=[1,-7,5,31,-30];p3=[1,-1,-25,25];p4=[-2,3,1,5,8];p1_x=polyval(p1,[-1.5,2.1,3.5]) p2_x=polyval(p2,[-1.5,2.1,3.5]) p3_x=polyval(p3,[-1.5,2.1,3.5]) p4_x=polyval(p4,[-1.5,2.1,3.5])第十题a=[2,3,-4];b=[4,-2,5];c=[3,0,-2,5,6];d1=conv(a,b)[d2,r2]=deconv(c,a)[d3,r3]=deconv(c,b)第十一题a=[2,3,-4];b=[4,-2,5];c=[3,0,-2,5,6];dao1=polyder(a,b)[dao2,r2]=polyder(c,a)[dao3,r3]=polyder(c,b)第十二题x=-5:.25:5;y=10*exp(-x);xi=-5:5;y1=interp1(x,y,xi,'nearest');y2=interp1(x,y,xi,'linear');y3=interp1(x,y,xi,'spline');y4=interp1(x,y,xi,'cubic'); figure(1);subplot(2,2,1)plot(x,y,'-',xi,y1,'o');title('最邻近内插');grid on;xlabel('x');ylabel('y');subplot(2,2,2)plot(x,y,'-',xi,y2,'o');title('线性内插');grid on;xlabel('x');ylabel('y');subplot(2,2,3)plot(x,y,'-',xi,y3,'o');title('三次样条内插');grid on;xlabel('x');ylabel('y');subplot(2,2,4)plot(x,y,'-',xi,y4,'o');title('三次曲线内插');grid on;xlabel('x');ylabel('y');第十三题x=rand(1,50);y=randn(1,50);minx=min(x)miny=min(y)maxx=max(x)maxy=max(y)avx=mean(x)avy=mean(y)Ex=(std(x)).^2Ey=(std(y)).^2第十四题t=[0 .2 .4 .6 .8 1.0 2.0 5.0 ]';y=[1.0 1.51 1.88 2.13 2.29 2.40 2.60 24.00]'; X1=[ones(size(t)) t t.^2];a=X1\y;X2=[ones(size(t)) exp(-t) t.*exp(-t)];b=X2\y;T=[0:.1:6]';Y1=[ones(size(T)) T T.^2]*a;Y2=[ones(size(T)) exp(-T) T.*exp(-T)]*b; figure(1)subplot(1,2,1)plot(T,Y1,'-',t,y,'o'),grid ontitle('多项式回归')subplot(1,2,2)plot(T,Y2,'-',t,y,'o'),grid ontitle('指数函数回归')第十五题t=0:1/119:1;x=3*sin(2*pi*20*t)+10*sin(2*pi*200*t+pi/4)+10*randn(size(t)); y=fft(x);m=abs(y);f=(0:length(y) -1)'*119/length(y);figure(1)subplot(2,1,1),plot(t,x),grid ontitle('被噪声污染的信号')ylabel('Input \itx'),xlabel('Time ')subplot(2,1,2),plot(f,m)ylabel('Abs. Magnitude'),grid onxlabel('Frequency (Hertz)')第十六题w=input('w=');t=0:1/119:1;x1=sin(w.*t)+randn(size(t));x2=cos(w.*t)+randn(size(t));x3=sin(w.*t)+randn(size(t));a=corrcoef(x1,x2)b=corrcoef(x1,x3)若没有正弦分量w=input('w=');t=0:1/119:1;x1=randn(size(t));x2=randn(size(t));x3=randn(size(t));a=corrcoef(x1,x2)b=corrcoef(x1,x3)第十七题z1=quad('exp(-2*t)',0,2)z2=quad('exp(2*t)',0,2)z3=quad('exp(t.^2-3*t+.5)',-1,1)第十八题function y=five(x)y=exp(-x)-1.5*exp(2*cos(2*x));%主函数x0=input('x0='); %执行时,按要求输入[-1,1]z=fzero('five',x0)第十九题function f=five(x,y)f=exp(-x.*y)-2*x.*y;%主函数z=dblquad('five',0,1,-1,1)第二十题function dy=five(t,y)dy=[0.5-y(1);y(1)-4*y(2)];%主函数X0=[1; -0.5];tspan=[0,25];[T,X]=ode45('five',tspan,X0);figure(1)subplot(2,1,1),plot(T,X(:,1),'r'),title('x_{1}'),grid onsubplot(2,1,2),plot(T,X(:,2),'k'),title('x_{2}'),grid onfigure(2)plot(X(:,1),X(:,2)),title('系统轨迹'),grid onxlabel('x_{1}'),ylabel('x_{2}')。
Matlab教程第五章
6
命令文件
脚本文件由注释行和代码行组成。 之后的都 脚本文件由注释行和代码行组成。%之后的都 认为是注释文件, 认为是注释文件,注释定义符只能影响一行代 类似于C++中的 。 中的//。 码,类似于 中的 也可以定义多行注释“%{”,“%}”。 也可以定义多行注释“ , 。 代码行都是一些简单的matlab的指令和命令, 的指令和命令, 代码行都是一些简单的 的指令和命令 可以完成相应的计算处理数据、 可以完成相应的计算处理数据、绘制图形结果 的操作。 的操作。 也可以在脚本文件中调用其他的函数来完成复 杂的数学运算。 杂的数学运算。
11
命令文件:
Y=[5 1 2;8 3 7;9 6 8;5 5 5;4 2 3]; bar(Y,'stack'); grid on set(gca,'Layer','top');
12
5.2 控制结构
程序流程控制包含控制程序流程的基本结构和语 例如应用程序的选择和循环结构, 法,例如应用程序的选择和循环结构,即结构 化编程的基本结构。 化编程的基本结构。 Matlab有三种控制结构 有三种控制结构 顺序结构 分支结构 循环结构
20
应用举例-switch语句
clear var=input('Input a number'); switch var case 1 disp('1') case {2,3,4} disp('2 or 3 or 4') case 5 disp('5') otherwise disp('sth else') 这里使用了元包数组增加判断条 end
A=0 -1
matlab讲义第五章
在上例中,cellstr命令将字符数组departments转换成 在上例中,cellstr命令将字符数组departments转换成 命令将字符数组departments 异质数组celldata储存,而原先补在字符数组departments celldata储存 异质数组celldata储存,而原先补在字符数组departments 结尾的空格符已被删除,可用length命令验证如下: length命令验证如下 结尾的空格符已被删除,可用length命令验证如下: 显示异质数组celldata >>length(celldata{2}) % 显示异质数组celldata 第2个元素长度 若要将包含字符串的异质数组转换成一般的二维字符数 可用char命令,例如: char命令 组,可用char命令,例如: 异质数组celldata celldata转 >>strdepts=char(celldata) %异质数组celldata转 换成字符数组,结尾补空。 换成字符数组,结尾补空。 strdepts= ee cs econ
matlab入门教程(第五章)
指 令 \downarrow \leftarrow \leftrightarrow \rightarrow \uparrow \circ \bullet
符
\exists \forall \in \infty \perp \prime \cdot
字符
\Nu \xi \Xi \pi \Pi \rho
6
\Delta \epsilon
\zeta 指 令 'sin\beta'
效果
\lambda \Lambd a \mu 指 令 '\zeta\omega'
\sigma \Sigma \tau
5
Normal and Grid on 4 2 0 -2 -4 -2 2
Equal 4 2 0 -2 0 -2 -4 -2
Square
0 Image and Box off 2 0 -2 -1 0 1
2
-2
0
2
0 Tight
2
Image and Fill 1 0.5 0 -0.5 -1 -1 0 1 -2 -1 0 2
一 坐标轴的控制
【例 5.2-3】观察各种轴控制指令的影响。演示采用长轴为 3.25,短轴为 1.15 的椭圆。注意: 采用多子图(图 5.2-3)表现时,图形形状不仅受“控制指令”影响,而且受整个图面“宽 高比”及“子图数目”的影响。本书这样处理,是出于篇幅考虑。读者欲想准确体会控制指 令的影响,请在全图状态下进行观察。
MTALAB课件第五章
函数文件的特点: (1) 第一行总是以“function”引导的函数声明行;
函数声明行的格式: function [输出变量列表] = 函数名(输入变量列表) (2) 函数文件在运行过程中产生的变量都存放在函数本身的工作 空间; (3) 当文件执行完最后一条命令或遇到“return”命令时,就结束 函数文件的运行,同时函数工作空间的变量就被清除; (4) 函数的工作空间随具体的M函数文件调用而产生,随调用结束 而删除,是独立的、临时的,在MATLAB运行过程中可以产生任 意多个临时的函数空间。 创建M函数文件并调用的步骤如下:
5.1.4 M函数文件
(1) 编写函数代码 function y=Ex0502(zeta) %EX0502 画二阶系统时域曲线 x=0:0.1:20; y=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt(1-zeta^2)*x+acos(zeta)) plot(x,y) (2)将函数文件保存为“Ex0502.m”。 (3)在MATLAB命令窗口输入以下命令,则会出现f的计算值和绘制 的曲线: f=Ex0502(0.3) 程序分析:§第一行指定该文件是函数文件,文件名为“Ex0502”, 输入参数为阻尼系数zeta,输出参数为时域响应y。 §当函数文件调用结束,查看x、y: x ??? Undefined function or variable 'x'. y ??? Undefined function or variable 'y'. 注意:M脚本文件和M函数文件的文件名及函数名的命名规则与变 量的命名规则相同。
5.2程序流程控制
5.2.4 switch…case开关结构 语法: switch 开关表达式 case 表达式1 语句段1 case表达式2 语句段2 ... otherwise 语句段n end
《MATLAB实践教程》课件第5章
第5单元 MATLAB程序设计
(2) 将判断一个矩阵各个元素是否为素数的任务编写成 一个MATLAB函数,并存盘为primematrix.m。程序如下:
function y=primematrix(x) x1=rem(x,2)==0&x>2; x2=rem(x,3)==0&x>3; x3=rem(x,5)==0&x>5; x4=rem(x,7)==0&x>7; y=find((x1+x2+x3+x4)==0);
function y=stdfun(x,a,b,c) y=a*x.^2+b*x+c;
第5单元 MATLAB程序设计
编写调用函数stdfun的主程序。程序如下:
clc; close all; clear all; %初始化 x=[1 2 3]; a=2; b=-1; c=5; y=stdfun(x,a,b,c)
5.3.2 编写匿名函数
匿名函数指在主程序中以表达式方式定义的函数,下面
示例展示它的格式和调用方法,程序如下:
quade=@(x,a,b,c)a*x.^2+b*x+c; %定义匿名函数并赋给变量quade
x=[1 2 3]; a=2; b=-1; c=5;
%输入参数赋值
y=quade(x, a, b, c) %以调用变量quade调用匿名函数,注意输入参数的位
第5单元 MATLAB程序设计
图5-3 M-file函数的结构
第5单元 MATLAB程序设计
在Editor窗口编写M-file函数,存盘名由“基本名+扩展 名”构成,存盘时仅仅键入基本名,扩展名默认为“.m”, 函数调用时使用存盘的基本名和指定的函数格式。注意, MATLAB7.1版本以后存盘函数基本名与函数定义行指定的 函数名可以不一致,而早先的版本要求存盘基本名与函数定 义行的指定函数名必须一致。下面的函数示例计算 (y,outp)=f(x,inp),其中输入参数x为自变量,输入参数inp为 指定拟合的多项式阶数,输出参数y为因变量,且
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
一、实验目的
1.掌握数据统计和分析的方法。
2.掌握数值差值与曲线拟合的方法及其应用。
3.掌握多项式的常用运算。
一、实验内容
1、利用matlab提供的randn函数生成符合正太分布的10×5随即矩阵A,进行以下操作:(1)、A各列元素的均值和标准方差。
(2)、A的最大元素和最小元素。
(3)、求A每列元素的和以及全部元素之和。
(4)、分别对A的每列元素按升序、每行元素按降序排序。
(1)程序及截图如下:
(2) 程序及截图如下:
(3)程序及截图如下:
(4)程序及截图如下:
2、按要求分别对指定函数进行插值和拟合。
(1)、按表1所示用3次样条插值计算0 ~90°内整数点的正弦值和0 ~75°内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,并将两种计算结果进行计算结果比较。
(2)按表2所示用3次多项式方法插值计算1~100之间整数的平方根。
表1
α度0 15 30 45 60 75 90
sinα0 0.2588 0.5000 0.7071 0.8660 0.9659 1.0000 tanα0 0.2679 0.5774 1.0000 1.7320 3.7320
表2
N 1 4 9 16 25 36 49 64 81 100 √N 1 2 3 4 5 6 7 8 9 10 程序部分截图如下:
运行结果数据截图如下:
画图截图如下:
对sinα用5次多项式拟合方法计算函数值,程序截图如下:
运行结果截图如下:
画图截图如下:
对tanα用5次多项式拟合方法计算函数值,程序截图如下:
运行结果截图如下:
画图截图如下:
(2)用3次样条插值方法计算平方根。
程序截图如下:
运行结果数据截图:
画图截图如下:
3.有两个多项式平P(x)=2x^4-3x^3+5x+13,Q(x)=x^2+5x+8,试求P(x)、P (x)Q(x)以及P(x)/Q(x)的导数。
程序截图如下:
运行结果数据截图如下:
结果如下:
P’(x)=8x^3-9x^2+5
(PQ)’=12x^5+35x^4+4x^3-57^x2+76x+105
(P/Q)’=(4x^5+27x^4+34x^3-77x^2-26x-25)/(x^4+10x^3+41x^2+80x+64)
三、实验总结
1.掌握了一些数据统计和分析的方法。
2.曲线拟合作很重要并且不是很好做一定要多加练习熟练掌握。
3.多项式也是我们常用运算需要充分了解,它是其他的关键。