MATLABSimulink北航第二次课2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


image,light,line,patch…
1.9 句柄图形系统
句柄图形对象

对象的句柄:

创建对象时,MATLAB返回的用于标识此对象的数值
每个对象都有一个独一无二的句柄,通过操作句柄,可查看对象的 所有属性或修改大部分属性
将“句柄值为h的对象”简称为“对象h” 根对象的句柄值为0,图形窗口的句柄值默认为正整数,其他对象 的句柄值为系统随机产生的正整数

二维插值zi=interp2(x,y,z,xi,yi,’method’) 三维插值vi=interp3(x,y,z,v,xi,yi,zi,’method’) 三次样条插值pp=spline(x,y),返回三次样条插值的分段多项式形式的向 量,以进行插值计算:yi=ppval(pp,xi)
1.8 MATLAB在数值分析中的应用
function xIntegration clear all clc % the interval: [a, b], the step: d a = 0; % 积分下限 b = 3*pi; % 积分上限 d = pi/1000; % 积分步长 t = a:d:b; y = func(t);
format long % 梯形数值积分 y_trapz = trapz(y) * d % 自适应Simpson法 y_quad = quad(@func,a,b) y_quadl = quadl(@func,a,b) disp('Results:') disp(' Trapz Qquad Quadl') disp([y_trapz,y_quad,y_quadl]) function y = func(t) y = exp(-0.5*t) .* sin(t+pi/6);
(x,y)为已知数据,n为多项式阶数;输出参数p为拟合生成 的多项式的系数向量(长度为n+1),s为结构参数

通过调用y=polyval(p,x)可以获得x处估计相应的多项式函数值y

样条拟合函数

>>help splines可快速查看函数列表 使用这些函数拟合得到曲线函数sp以后,可利用fnval()计算任意自 变量下的函数值
1.8 MATLAB在数值分析中的应用
[例18]:多项式的拟合
》clc 》clear
》x=0:0.1:2*pi; %生成样本点x
》y=sin(x)+0.5*rand(size(x)); %生成样本点y,通过随机矩阵 》p=polyfit(x,y,3) %拟合出多项式(3阶) 》y1=polyval(p,x); %求多项式的值 》plot(x,y,'+',x,y1,'-r') %绘制多项式曲线,以验证结果 程序运行结果如图3-1所示: 图3-1多项式拟合示例程序运行结果图
1.8 MATLAB在数值分析中的应用
多项式

使用降幂系数的行向量表示,如
4 3 2
》 p=[1 -12 0 25 116]

》 r=roots(p) x 12x 0 x 25x 116 r = 11.7473 多项式表示为:p=[1 -12 0 25 116] 2.7028 roots:求多项式等于0的根,根用列向量表示 -1.2251 + 1.4672i poly:已知多项式的根,构建相应多项式 -1.2251 - 1.4672i polyval(p,n):求多项式函数值 》p=poly(r) p= polyder(p):求多项式的微分多项式 1 -12 -0 25 116 >>polyval(p,5) ans = -634 >> pp=polyder(p) pp = 4 -36 0 25
第二章 MATLAB在数值分析中的应用
董素君
新主楼 C-503
dsj@buaa.edu.cn
思考题
进行下列计算,给出不使用for和while等循环语句的计算方法;
1.
k 2
i 0
63
i
>> sum(2.^[0:63]) ans = 1.8447e+019
2.求出y=x*sin(x) 在0<x<100的每个峰值,并绘制曲线
yi=interp1(x,y,xi,’method’,’extrap’) ‘method’用于指定插值算法,其值可以是: ‘nearest’——最近插值(执行速度最快,输出结果为直角转折) ‘linear’——线性插值(默认值,在样本点上斜率变化很大) ‘spline’——分段三次样条插值(最花时间,输出结果最平滑) ‘cubic’, ‘pchip’——分段三次Hermite插值(最占内存,输出结 果与spline差不多)
[例42] 对进行数值积分。

用梯形求积函数trapz()、自适应Simpson求积(低阶)函数quad()和 自适应Lobatto求积(高阶)函数quad了()进行计算。

注:被积函数func()的表达式必须是向量形式:
y=exp(-0.5*t).*sin(t+pi/6),式中t和y为向量,所以用到点乘符号“.*”。
a = 0; % 积分下限 b = 3*百度文库i; % 积分上限 d = pi/1000; % 积分步长
1.9 句柄图形系统
句柄图形对象

层次结构

创建:

Root,figure,axed,uicontrol,uimenu,uicontextmenu,uitoolbar,uibuttongroup ,uipanel

输入:fun为被积函数,表达式必须使用点运算符(.*、./ 和.^)以 支持向量;a,b即积分上下限;tol绝对误差限(默认1.e-6); p1,p2…直接传递给函数fun的已知参数 输出:q积分结果 使用方法同上


自适应Lobatto法数值积分:quadl()

1.8 MATLAB在数值分析中的应用
1.8 MATLAB在数值分析中的应用


梯形法数值积分: z=trapz(y)
自适应simpson法数值积分:quad() q=quad(@fun,a,b)
q=quad(@fun,a,b,tol)
q=quad(@fun,a,b,tol,trace,p1,p2,…)
y=exp(-0.5*t).*sin(t+pi/6)
例15]:相除deconv 》[q,r]=deconv(c,b) q= 1 2 3 r= 0 0 0 0 q 为商多项式,r为余多项式
1.8 MATLAB在数值分析中的应用
插值

一维插值interp1()

yi=interp1(x,y,xi)
例exp2_16.m
yi=interp1(x,y,xi,’method’)
>> x=0.01*pi:0.01*pi:32*pi; >> y=x.*sin(x); >> plot(x,y) >> hold on >> grid
max sort
主要内容
1.1 MATLAB环境
1.2 基本程序元素 1.3 数据类型及常用函数
1.4 矩阵
1.5 字符串数组 1.6 程序设计 1.7 图形可视化 1.8 MATLAB在数值分析中的应用 1.9 图形用户界面GUI开发

roots:求多项式等于0的根,根用列向量表示 poly:已知多项式的根,构建相应多项式 polyval(p,n):求多项式函数值 polyder(p):求多项式的微分多项式
》a=[1 2 3] ; 》polyval(a,2) ans = 11 》polyder(a) ans = 2 2
制不同方法产生的曲线
》legend('sampled point','nearest','linear','spline','cubic')
exm19.m
1.8 MATLAB在数值分析中的应用
1.8 MATLAB在数值分析中的应用
拟合

最小二乘法多项式拟合函数

p=ployfit(x,y,n) 或 [p,s]=ployfit(x,y,n)
get(figure), get(h,’PropertyName’)

>> get(0,'ScreenSize') ans = 1 1 1280 800 >> set(0,'Units','norm'); >> get(0,'ScreenSize') ans = 0 0 1 1 >> figure(‘Units’,‘norm’,… 'position',[0 0 1 1])
1.8 MATLAB在数值分析中的应用
微/积分


y=exp(-0.5*t).*sin(t+pi/6)
已知函数y=f(x),在区间[a,b]内y对x的积分为 梯形法数值积分:
z=trapz(y):单位步长计算y的积分,否则需乘以步长

自适应simpson法数值积分:quad() q=quad(@fun,a,b) q=quad(@fun,a,b,tol) q=quad(@fun,a,b,tol,trace,p1,p2,…)


图形对象属性

每个图形对象都有一个属性列表,记录了该图形对象的所有信息
属性列表示一个结构体,字段名为对象的属性名,字段值为对象的 属性值 对图形对象进行操作就是对图形对象属性值的操作

1.9 句柄图形系统
句柄图形对象

基本操作

获取对象属性值:
get(h), a=get(h),
1.8 MATLAB在数值分析中的应用
多项式

使用降幂系数的行向量表示,如
x 12x 0 x 25x 116
4 3 2

多项式表示为:p=[1 -12 0 25 116] 》 p=[1 -12 0 25 116] 》 r=roots(p) r= 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i 》p=poly(r) p= 1 -12 -0 25 116
设置对象属性值: set(h,’PropertyName’,’PropertyValue’),set(h), set(h,’PropertyName’)

获取当前的图形、坐标轴和对象 gcf:获取当前图形窗口句柄值
例2:多项式插值
》ys=[0 0.9 0.6 1 0 0.1 -0.3 -0.7 -0.9 -0.2]; %已有的样本点ys 》xs=0:length(ys)-1; %已有的样本点xs
》x=0:0.1:length(ys)-1;%新的样本点x
》y1=interp1(xs,ys,x,'nearest'); %插值产生新的样本点y1 》y2=interp1(xs,ys,x,'linear'); %插值产生新的样本点y2 》y3=interp1(xs,ys,x,'spline'); %插值产生新的样本点y3 》y4=interp1(xs,ys,x,'cubic'); %插值产生新的样本点y4 》plot(xs,ys,'+k',x,y1,':r',x,y2,'-m',x,y3,'--c',x,y4,'--b') %分别绘
x 12x 0 x 25x 116
4 3 2
1.8 MATLAB在数值分析中的应用
多项式

多项式的运算 [例14]:相乘conv 》a=[1 2 3] ; 》b=[1 2]; 》c=conv(a,b) c= 1 4 7 6 conv指令可以嵌套使用,如: 》conv(conv(a,b),c) ans = 1 8 30 68 97 84 36
1.8 MATLAB在数值分析中的应用
多项式

使用降幂系数的行向量表示,如

求极值: >> p=[1,-12,0,25,116]; 多项式表示为:p=[1 -12 0 25 116] x=[0:1:10]; roots:求多项式等于0的根,根用列向量表示 y=polyval(p,x); poly:已知多项式的根,构建相应多项式 plot(x,y) polyval(p,n):求多项式函数值 hold on polyder(p):求多项式的微分多项式 grid pp=polyder(p) xx=roots(pp) yy=polyval(p,xx) plot(xx,yy,'ro')
相关文档
最新文档