当前位置:文档之家› 哈工大matlab讲义第三讲

哈工大matlab讲义第三讲

2018/10/20
baowen@
4、微分
• 微分描述了函数在一点处的斜率,是函 数的微观性质,它对函数的微小变化十 分敏感,函数的很小的变化,容易产生 相邻点斜率的巨大变化。 • 尽量避免使用数值微分,尤其是试验数 据的微分。如果迫切需要,最好先将试 验数据进行最小二乘拟合伙这三次样条 拟合,然后对拟合函数进行微分。
baowen@
3、积分
• 有限区域内积分 函 数 : trapz、quad和quad8 。 • 函数trapz通过计算梯形面积的和近似函数 的积分,函数的分割是人为地。 • quad使用Simpson递归方法,quad8使用 Newton-costes递归方法进行数值积分。为了 获得更精确的结果,它们在所需的区间都 计算被积函数。quad8比quad更精确。
2018/10/20
三次样条
• pp形式可以和三次多项式形式转化: • [break,coef,np,nc]=unmkpp(pp) • 断点、三次多项式、多项式数量、系数数量 • pp=mkpp(break,coef);
• 由于转化为了多项式形式,可以方便的进行 积分和微分运算。
2018/10/20
2018/10/20
baowen@
微分方程
• 输入变量t0、tf为积分的启始和中止时间, 单位是秒。x0为初始的状态向量。tol控制 结果的精度,可以缺省。一般来说,ode45 比ode23运算速度快一些。 d 2x 2 dx • Var der Pol微分方程 dt2 (1 x ) dt x 0 • 重新定义变量,令 x1=x x2=dx/dt • 则 dx1/dt=x2 dx2/dt=u(1-x12)x2-x1
2018/10/20
baowen@
二、三角分解
• 三角分解把矩阵分解为上三角矩阵和下 三角矩阵,又称为LU分解或者。计算中 使用高斯变量消去法。这一分解使用 • [l,u]=lu(a)实现。
2018/10/20
baowen@
三、奇异值分解
2018/10/20
baowen@
二、多项式运算
• 函数conv进行乘法运算,deconv进行除 法运算。MATLAB没有提供特别的多项 式加减法运算。 • 多项式除法并不一定能够除尽,很多时 候需要有余数多项式。 • 多项式微分使用polyder(p)函数,估计值 使用polyval(p,at)函数。
2018/10/20
baowen@
2、求零点
• 函数fzero可以寻找一维函数的过零点。 • 应用:使用bode图判断控制系统稳定性 ,要看幅频特性过零点和相频特性过 1800点。 • fzero函数也可以寻找函数值等于常值点 ,只要重新定于函数为f(x)-c即可
2018/10/20
baowen@
四、滤波和平滑
• • • • •
1、插值和拟合的问题:噪声 2、滤波: 滞后,filter y=filter(b,a,x) a,b:滤波器的分子分母,x输入 a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)*y(n-1) - ... a(na+1)*y(n-na) • 例程:ex46 baowen@
2018/10/20
baowen@
例题
• 求出y=x*sin(x) 在0<x<100的每个峰值 • 思路: • 1、数学上峰值就是导数为零的点 • 2、导数在matlab中可以使用差分代替 • 3、差分后怎么求过零点呢?
2018/10/20
baowen@
FFT
• 需要注意的是fft结果为复数矩阵,为了 得到幅频特性,可使用abs函数,使用 atan2得到相角,由于有的系统的相角可 能大于1800,而相角函数值域在1800~1800之间,需要使用unwrap函数展 开折叠的相角,从而得到相频特性。
2018/10/20
baowen@
2018/10/20
baowen@
三、三次样条
• 1、使用的原因 • 高阶多项式插值出现病态问题,三次 样条使用分段多项式,各点上的三次导 数相等。它光滑、导数连续。 • 2、插值 • yi=spline(x,y,xi); • pp=spline(x,y); 分段多项式形式 • 例程:ex44 baowen@
• • • • • • 函数名 含义 max 最大值 min 最小值 mean 均值 std 标准方差 median 中值
20Байду номын сангаас8/10/20
baowen@
分析函数
• • • • • • 函数名 含义 sum 元素的总和 prod 元素的乘积 cumrod 元素的累积 cumsum 元素的累加和 diff 差分函数:少了一个元素
6 微分方程数值解
• 常微分方程数值解用逐步积分方法实现, Runge-Kutta法是应用最多的微分方程数值 解的方法。两种Runge-Kutta法函数: • [t,x]=ode23(„xfun‟,t0,tf,x0,tol,trace) • [t,x]=ode45(„xfun‟, ,t0,tf,x0,tol,trace) • 这两种方法格式相同。其中xfun为定义的常 微分方程函数名,该函数必须以为输出, 以t、x为输入。
2018/10/20
baowen@
应用举例
• 一、特性拟合 q k p 0.4 b • title(‘string’) ^上标 _下标 • 二、模型辨识的阶数确定
• 三、数值积分:已知加速度求速度,
2018/10/20
baowen@
2018/10/20
baowen@
5、FFT变换
• FFT即快速傅立叶变换,是数据分析的基本 方法,是x由基2的快速变换算法来计算。 如x长度不是精确的2次幂则后面使用0填充 ,ifft(x)是向量x的离散傅立叶变换的逆变换 。 • 在频率轴 上 绘 制 FFT曲线,要明确FFT结果 与实际频率点的关系。设n个数据点,采样 频率为fs,则Nyquist频率或n=N/2+1点与实 际频率的关系: f=(num-1)*fs/n baowen@ 2018/10/20
2018/10/20
baowen@
4 曲线拟和与插值
• 在分析试验数据中,常常要面临将试验 数据作解析描述的任务,这个问题有曲 线拟合和插值两种方法。 • 在曲线拟合中,假定已知曲线的规律, 作曲线的最佳逼近,但不需要经过所有 的数据点;在插值中,认为数据是准确 的,求取其中描述点之间的数据。
baowen@
matlab
二、插值函数
• 1、曲线插值函数interp1 • 方法 t=interp1(x,y,x0,‟method‟) • x、y:原始数据点,x0为进行插值的数组 ,method为插值算法:线性插值('linear'),三 次样条插值('spline'), 三 次 多 项 式 插 值 („cubic‟). • 如果x0出界,则对应值为NaN • 例程:ex42.m
3 多项式处理
一、多项式表示
• 多项式在MATLAB中使用降幂系数的行 向量表示。表示中需要包含零系数的项 。poly2str:control toolbox中的函数 • 使用函数roots可找出多项式等于零的根 。 • 规定:多项式用行向量,根用列向量。 • 给出多项式的根,使用poly函数也可以构 造出相应的多项式。
2018/10/20
baowen@
一、曲线拟合
• 1、多项式的最小二乘曲线拟合 • 使用polyfit,它需要曲线的x、y值,以及曲 线的阶数。 • 曲线的阶数:如果曲线的阶数选择的过小, 拟合效果不好;如果曲线的阶数过高,虽然 数据点上看到效果好,数据点之间会出现有 数据振荡的问题,阶数不宜过高,小于5阶。 • 灵活使用拟合
2018/10/20
• • • • • • •
3、平滑 yi=csaps(x,y,P,xi) yi=csaps(x,y,P) 其中P为平滑因子0~1 0: 最小二乘 1:平滑近似 ex46 ex45
2018/10/20
baowen@
5 数据分析
• 1、极小化 • MATLAB提供了fmin和fmins两个函数来 求极值,它们分别寻找一维和n维函数的 极值。它使用的单纯性法搜索。函数计 算量大,或搜索区内有多极值,搜索的 过程较长,也可能找不到极值。如找不 到极值,将停止运行并提供解释。 • 寻找极大值点,重定义函数为-f(x)即可。
目录
1 矩阵分析
2 数据分析函数 3 多项式处理 4 曲线拟和与插值
5 数据分析
6 微分方程数值解
2018/10/20 哈尔滨工业大学动力工程控制与仿真研究所
baowen@
<
>
主菜单
退出
1 矩阵分析
• 一、特征值分解 对于方阵a特征值问题:ax=rx,求取a阵的特 征值和特征向量使用下面的方法: [v,d]=eig(a) • 使用 [v,d]=eig(a,‟nobalance‟) • “平衡” 的作用减少计算误差,不平衡用于A 阵大小悬殊的时候。 • 广义特征值问题:ax=rbx,求解的方式为: • [v,d]=eig(a,b)
2018/10/20
baowen@
matlab
2、直接最小二乘
• 数据规律并不是多项式形式,直接最小 二乘来拟合。
• 最小二乘函数为k=nnls(fx,y)
• 计算结果将使得|fx*k-y|2范数下最小 • 在计算中,fx可以为x的函数。 • 例子:拟合
2018/10/20
• [u,s,v]=svd(a) • 实现奇异值分解。 • 分解得到的三个因数有如下关系 • a=u*s*v • 其中u矩阵和v矩阵是正交矩阵,s矩阵是 对角矩阵,它的对角元素是a矩阵的奇异 值。 • 奇异值分解的稳定性很好。
相关主题