matlab学习笔记.docx

上传人:b****4 文档编号:24164161 上传时间:2023-05-24 格式:DOCX 页数:14 大小:25.34KB
下载 相关 举报
matlab学习笔记.docx_第1页
第1页 / 共14页
matlab学习笔记.docx_第2页
第2页 / 共14页
matlab学习笔记.docx_第3页
第3页 / 共14页
matlab学习笔记.docx_第4页
第4页 / 共14页
matlab学习笔记.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

matlab学习笔记.docx

《matlab学习笔记.docx》由会员分享,可在线阅读,更多相关《matlab学习笔记.docx(14页珍藏版)》请在冰豆网上搜索。

matlab学习笔记.docx

matlab学习笔记

matlab常用到的永久变量。

ans:

计算结果的默认变量名。

ij:

基本虚数单位。

eps:

系统的浮点(F10a9Bg个oht):

inf:

无限大,例1/0

nanNaN:

非数值(N航anmnb谢)

pi:

圆周率n(n=3.1415926..)。

realmax:

系统所能表示的最大数值。

realmin:

系统所能表示的最小数值,

nargin:

函数的输入参数个数:

nargout:

函数的输出多数个数

①matlab的所有运算都定义在复数城上。

对于方根问题运算只返回处于第一象限的解。

⑦matlab分别用左斜/和右\来表示“左除和“右除”运算。

对于标量运算而言,这两者的作用没有区别:

但对于矩阵运算来说,二者将产生不同的结果。

多项式的表示方法和运算

p(x)=x^3-3x-5可以表示为p=[10–35],求x=5时的值用plotval(p,5)

也可以求向量:

a=[345],plotval(p,a)

函数roots求多项式的根roots(p)

p=[10-35];

r=roots(p)

由根重组多项式poly(根)

q=poly(r)

real(q)有时会产生虚根,这时用real抽取实根即可

conv(a,b)函数多项式乘法(执行两个数组的卷积)

a=[1234];

b=[14916];

c=conv(a,b)

多项式的加减法,低阶的多项式必须用首零填补,使其与高阶多项式有同样的阶次

多项式除法[q,r]=deconv(c,b)表示b/cq为商多项式,r为余数

多项式的导数polyder(f)

f=[245621];

s=polyder(f)

多项式的曲线拟合

x=[12345];

y=[5.640150250498.9];

p=polyfit(x,y,n)数据的n次多项式拟合poly:

矩阵的特征多项式、根集对应的多项式

x2=1:

0.1:

5;n取1时,即为最小二乘法

y2=polyval(p,x2);计算多项式的值(polyvalm计算矩阵多项式)

plot(x,y,'*',x2,y2);gridon

最小二乘法

x=[12345];

y=[5.640150250498.9];

plot(x,y,’*’),lsline

多项式插值(p158)

YI=interp1(x,y,XI,’method’)一维插值

(XI为插值点的自变量坐标向量,可以为数组或单个数。

method为选择插值算法的方法,包括:

linear(线性插值)

cubic(立方插值)

spline(三次样条插值)

nearst(最近临插值)

例如:

人口预测

year=1900:

10:

1900;

number=[7891105….每十年的人口数];

x=1900:

1:

2000;

y=interp1(year,number,x,’spline’);

plot(year,numeber,’*’,x,y);gridon

一维博里叶变换插值使用函数interpft实现,计算含有周期函数值的矢量的傅里叶变换

然后使用更多的点进行傅里叶变换的逆变换,函数的使用格式如下:

y=interpft(x,n)其中x是含有周期函数值的矢量,并为等距的点,n为返同等间距点的个数。

求解一元函数的最小值

y=fminbnd('humps',0.3,1)humps为一内置函数

求解多元函数的最小值

函数fminserch用于求多元函数的最小值。

它可以指定一个开始的矢量,并非指定一个区间。

此函数返回一个矢量为此多元函数局部最小函数值对应的自变量

纹理成图功能

由warp函数的纹理成图功能实现平面图像在空间三维曲面上的显示。

将文件名为flowers.tif的图像分别投影到圆柱形和球星表面上

i=imread('flowers.tif');

[x,y,z]=cylinder;

subplot(1,2,1),warp(x,y,z,i);

[x,y,z]=sphere(50);

subplot(1,2,2),warp(x,y,z,i);

warp(x,y,z,i);

求函数的零点

求函数humps在[1,2]区间上的零点fzero(‘humps’,[1,2]);

也可以给一个初始值fzero(‘humps’,0.9);

对于多项式可直接由roots求其根roots(‘4*x^3+……’);

也可以用solve

c=sym('c','real');

x=sym('x','real');

s=solve(x^3-x+c)

函数定积分

q=quadl(‘humps’,0,1)求humps函数在01区间上的定积分,也可以用quad语句

二重积分首先计算内积分,然后借助内积分的中间结果再求出二重积分的值,类似于积分中的分步积分法。

Result=dblquad(‘integrnd’,xin,xmax.,ymin,ymax)integrnd为被积函数的名称字符串

符号积分运算int(f)

最精确的是符号积分法

计算s=∫12[∫01xydx]dy

symsxy中间为空格,不能为逗号

s=int(int(‘x^y’,’x’,0,1),’y’,1,2)引号可省略

vpa(s)显示s的值

内积分限为函数的二重积分

I=∫14[∫√y2(x2+y2)dx]dy

符号法I=vpa(int(int(‘x^2+y^2’,’x’,sqrt(y),2),’y’,1,4)

微分运算(diff)

微分是描述一个函数在一点处的斜率,是函数的微观性质、因此积分对函数的形状在小范围内的改变不敏感,而微分很敏感。

—个函数的小的变化,容易产生相邻点的斜率的大的改变。

由干微分这个固有的困难.所以尽可能避免数值微分.特别是对实验获得的数据进行微分。

在这种情况,最好用最小二乘曲线拟合这种数据,然后对所得到的多项式进行微分;或用另一种方法对点数据进行三次样条拟合,然后寻找样条微分,但是,有时微分运算是不能避免的,在MATLAB中.用函数diff汁算一个矢量或者矩阵的微分(也可以理解为差分)。

a=[12333789];

b=diff(a)一次微分

bb=diff(a,2)二次微分

实际上diff(a)=[a

(2)-a

(1),a(3)-a

(2),……,a(n)-a(n-1)]

对于求矩阵的微分,即为求各列矢量的微分,从矢量的微分值可以判断矢量的单调性、是否等间距以及是否有重复的元素。

符号微分运算(diff)

symsxta

f=cos(a*x)

df=diff(f)由findsym的规则,隐式的指定对x进行微分

dfa=diff(f,'a')指定对变量a进行微分

dfa=diff(f,'a',3)三次微分

diff函数不仅作用在标量上,还可以在矩阵上,运算规则就是按矩阵的元素分别进行微分

symsax

A=[cos(a*x),sin(a*x),-sin(a*x),cos(a*x)];

dA=diff(A)

微分方程dsolve

在matlab中,符号表达式中包含字母D用来表示微分运算,D2,D3分别对应第二,第三阶导数,D2y表示d2y/dt2把t缺省了

y=dsolve(‘Dy=f(y)’)单个方程,单个输出

[u,v]=dsolve(‘Du=f(u,v)’,’Dv=g(u,v)’)2个方程,2个输出

s=dsolve(‘Dx=f(x,y,z)’,’Dy=g(x,y,z)’,’Dz=k(x,y,z)’)

s.xs.ys.z3个方程,架构数组

dsolve('Dx=-a*x')结果:

C1*exp(-a*t)没给定初值,所以结果中含参变量

x=dsolve('Dx=-a*x','x(0)=1','s')结果exp(-a*s)给定了初值,独立变量设为s

计算多元函数的梯度

fx=gradient(f)f是一个矢量返回f的一维数值梯度,fx对应于x方向的微分。

[x,y]=meshgrid(-2:

.2:

2,-2:

.2:

2);

z=x.*exp(-x.^2-y.^2);

[px,py]=gradient(z,.2,.2);

contour(z),holdon画等值线

quiver(px,py)

matlab字符串运算

利用sym命令创建表达式

f=sym(‘cos(x)+sin(x)’)或symsx,f=cos(x)+sin(x)

diff(f)求其导数

(也可直接用命令f=diff(‘cos(x)+cos(y)’)

当字符表达式中含有多于一个的变量时,只有—个变量是独立变量。

如果不告诉matlab哪一个变量是独立变量,则可以通过findsym命令询问

利用findsym命令查询独立变量

f=sym('sin(a*x)+b')

findsym(f,1)给出独立变量(一个变量,如果为2则给出2个变量)

findsym(f)给出所有变量

符号表达式的化简和替换

collect函数collect(f,v)表示将f表示为关于符号变量v的多项式形式,即关于v合并同类项,v缺省,则用findsym确定的缺省变量

symsxy

f=x^2*y+y*x-x^2-2*x+1

collect(f)得到(-1+y)*x^2+(y-2)*x+1

collect(f,y)得到(x+x^2)*y+1-x^2-2*x

expand函数expand(f)将f展开,写成和的形式

symsx

expand((x-1)^3)得到x^3-3*x^2+3*x-1

horner函数horner(f)将f写成镶嵌套形式

symsx

horner(x^3-6*x^2)得到(-6+x)*x^2

factor函数factor(f)将f转换成低阶有理多项式的乘积

symsx

f=x^3-6*x^2+11*x-6

factor(f)得到(x-1)*(x-2)*(x-3)

simplify(f)函数综合化简

simple(f)函数的最简形式

symsx

f=2*sin(x^2)+cos(3*x)

simple(f)如果不想看到中间过程,可z=simple(f)有时使用两次simple命令可以得到最简式

如果想知道哪个简化命令得到最后结果,可以加一个参数how

[z,how]=simple(f)

符号表达式的替换

subs(f,new,old)

f='a*x^2+b*x+c'

subs(f,'t','x')得到a*(t)^2+b*(t)+csubs是一个符号函数,返回一个符号变量

subexpr函数有时matlab返回的符号表达式难以理解,用subexpr函数,可以将表达式中重复出现的子式用一个符号表示,从而简化表达形式

c=sym('c','real');

x=sym('x','real');

s=solve(x^3-x+c)

a=subexpr(s)得到sigma=-108*c+12*(-12+81*c^2)^(1/2)

a=

[1/6*sigma^(1/3)+2/sigma^(1/3)]

[-1/12*sigma^(1/3)-1/sigma^(1/3)+1/2*i*3^(1/2)*(1/6*sigma^(1/3)-2/sigma^(1/3))]

[-1/12*sigma^(1/3)-1/sigma^(1/3)-1/2*i*3^(1/2)*(1/6*sigma^(1/3)-2/sigma^(1/3))]

pretty函数有时也能起到同样的作用。

Pretty(f)显示函数的习惯书写形式

线性方程组的求解

求解线性方程组,用反斜杠\

a=hilb(3)

b=[123]'

a\b

矩阵的特征值和特征向量

用eig(v,d)函数,[v,d]=eig(A);其中d将返回特征值,v返回相应的特征向量,缺省第二个参数将只返回特征值

symsabcreal

A=[abc;bca;cab];

[v,d]=eig(A);

为了观察更清楚,使用以前学过的替换函数,这里不用默认的sigma,而改用M,显式的代替繁琐的表达子式

vv=subexpr(v);

vs=subs(vv,'m','sigma')运行结果为

vs=

[1,1,1]

[-(c+(m)-a)/(c-b),-(c-(m)-a)/(c-b),1]

[-(a-(m)-b)/(c-b),-(a+(m)-b)/(c-b),1]

再用m替换d中的表达子式

dd=subexpr(d);

ds=subs(dd,’m’,’sigma’)

运行结果为ds=

[(m),0,0]

[0,-(m),0]

[0,0,c+a+b]

note求特征值也可用以下命令

f=poly(A)poly函数用来求A的特征多项式

d=solve(f)solve(f)函数用来求多项式的解

svd()函数求矩阵的奇异值分解,将矩阵分解为两个正交矩阵和对角矩阵的乘积

a=sym(hilb

(2))

[u,s,v]=svd(a)

代数方程和方程组

代数方程的求解可用solve(f)命令,如果f不含=,matlab将给表达式置零。

方程的未知量在默认的情况下由findsym决定或显式指出

symsabcx

solve(a*x^2+b*x+c)以x为默认变量

solve(a*x^2+b*x+c,a)指定对a为变量

求含有等号的方程的解(一定要加单引号)

f=solve(‘cos(x)=sin(x)’)

x=solve('exp(x)=tan(x)')如果不能求得符号解,就计算可变精度解。

求解方程组与单方程类似

解一个三元一次方程

v=solve('a*u^2+v^2','u-v=1','a^2-5*a+6')

结果为v=

a:

[4x1sym]u:

[4x1sym]v:

[4x1sym]

一些常用的符号运算

极限运算limit

limit(f)求x到0的极限

limit(f,x,a)或limit(f,a)求x到a的极限

limit(f,a,’left’)limit(f,a,’right’)求x到a的左极限和右极限

limit(f,inf)求x趋于无穷的极限

符号求和symsum(s)

symsum(s)以默认的findsym决定的变量求和

symsum(s,v)以s中指定的变量v求和

symsum(s,a,b)symsum(s,v,a,b)从a到b的有限项求和

symskn

symsum(k)从0到k求和

symsum(k,0,n-1)从0到n-1求和

symsum(1/k^2,1,inf)无限项求和

泰勒级数taylor(f)

taylor(f)表示求f的5阶talor展开,可以增加参数指定展开的阶数(默认式5),也可以对于多元函数指定展开的变量,还可以指定在哪个点展开

symsxt

taylor(exp(-x))

taylor(log(x),6,1)在1点的6阶taylor展开

taylor(x^t,3,t)对t的3阶taylor展开

积分变换

fourier变换和逆变换fourier(f)

fourier分析可以将信号转换为不同频率的正弦曲线。

可对离散数据进行分析,也可对连续时间系统进行分析,特别在信号和图形处理领域。

离散变换(DFT)作用于有限数据的采集,最有效的是快速fourier变换(FFT)

F=fourier(f)独立变量x,返回关于参数w的函数

F=fourier(f,v)返回函数F关于符号对象v的函数

F=fourier(f,u,v)对关于u的函数f进行变换,而不是缺省的w,返回函数F是关于v的函数

symstvwx

fourier(1/t)

fourier(exp(-t)*sym('Heaviside(t)'),v)

fourier(diff(sym('F(x)')),x,w)

Fourier逆变换

f=ifourier(F)缺省独立变量w,返回关于x的函数对w进行积分

f=ifourier(F,v)返回函数f是关于符号对象v的函数,而不是缺省的x

f=ifourier(F,u,v)是关于u的函数f进行变换,而不是缺省的x,返回函数f是关于v的函数

Laplace变换和逆变换laplace(f)

应用于连续系统(微分方程)中,可以用来求解微分方程的初值问题

laplace(F)缺省独立变量t,缺省返回关于s的函数L

laplace(F,t)返回关于t的函数L,而不是缺省的s

laplace(F,w,z)对函数F的自变量w积分,返回关于z的函数L

逆变换

F=ilaplace(L)缺省独立变量s,返回关于t的函数F

F=ilaplace(L,y)返回关于y的函数F,而不是缺省的t

F=ilaplace(L,y,x)对函数L的自变量y积分,返回关于x的函数F

Z-变换和逆变换ztrans(f)标量符号f的Z-变换

F=ztrans(f)缺省独立变量n,返回关于z的函数

F=ztrans(f,w)返回关于符号变量w的函数F,而不是缺省的z

F=ztrans(f,k,w)关于k的符号变量作Z-变换返回关于符号变量w的函数

逆变换iztrans(F)

f=iztrans(F)或(F,k)或(F,w,k)

符号绘图函数

符号函数简易绘图函数ezplot(f)

f可以包含单个符号变量x的字符串或表达式,默认画图区间(-2pi,2pi),如果f包含x和y,画出的图像是f(x,y)=0的图像,缺省区间是-2piEzplot(f,xmin,xmax)或ezplot(f,[xmin,xmax])绘制在xminsymsxt

ezplot('t*cos(t)','t*sin(t)',[0,4*pi])

绘制符号图像函数fplot(fun,lims,tol,’linespec’,n)

其中lims=[xmin,xmax]或[xmin,xmax,ymin,ymax]tol为指定相对误差,默认0.001‘linespec’指定绘图的线型n指定最少以n+1个点绘图

[x,y]=fplot(fun,lims,…)只返回用来绘图的点,并不绘图,可以自己调用plot(x,y)来绘制图形。

symsx

subplot(2,2,1),fplot('humps',[0,1])

f='abs(exp(x*(0:

9))*ones(10,1))'

subplot(2,2,2),fplot(f,[0,2*pi])

subplot(2,2,3),fplot('sin(1./x)',[0.01,0.1],1e-3)

matlab绘图

二维图形的绘制

plot在(x,y)坐标下绘制二维图像支持多个x-y二元结构

plot3在(x,y,z)坐标下绘制三维图形

loglog在(x,y)对数坐标下绘制二维图形

semilogx在x为对数坐标,y为线性坐标的二维坐标中绘图

semilogy在x为线性坐标,y为对数坐标的二维坐标中绘图

plotyy在有两个y轴的坐标下绘图

plot用法

plot(x,y,'--rs','linewidth',2,'markeredgecolor','k',...

'markerfacecolor','g','markersize',10)

plotyy用法

plotyy(x1,y1,x2,y2)以x1为标准,左轴为y轴绘制y1向量,x2为基准,右轴为y轴,绘制y2向量

plotyy(x1,y1,x2,y2,fun)用字符串fun指定的绘图函数(plot,semilogx,semilogy,loglog,stem)

plotyy((x1,y1,x2,y2,fun1,fun2)

t=0:

pi/20:

2*pi;

y=exp(sin(t));

plotyy(t,y,t,y,'plot','stem')stem为二维杆图

[ax,h1,h2]=plotyy(…)返回左右两y轴的句柄(分别为ax

(1)ax

(2),以及在两坐标轴中生成的图形对象的句柄,分别为h1h2

t=0:

900;

A=1000;

a=0.005;

b=0.005;

z2=cos(b*t);

z1=A*exp(-a*t);

[haxes,hline1,hline2]=plotyy(t,z1,t,z2,'semilogy','plot');

axes(haxes

(1))

ylabel('semilogplot')对数坐标

axes(haxes

(2))

ylabel('linearplot')

set(hline2,'linestyle','--')

其他二维图形绘图指令

bar(x,y)二维条形图

hist(y,n)直方图

histfit(y,n)带拟和线的直方图,n为直方的个数

stem(x,y)火柴杆图

comet(x,y)彗星状轨迹图

compass(x,y)罗盘图

errorbar(x,y,l,u)误差限图

feather(x,y)羽毛状图

fill(x,y,’r’)二维填充函数以红色填充

pie(x)饼图

polar(t,r)极坐标图r为幅值向量,t为角度向量

t=0:

0.1:

8*pi;

r=cos(3*t/2)+1/2;

polar(t,r),xlabel('polar指令')

quiver(x,y)磁力线图

stairs(x,y)阶梯图

loglog(x,y)对数图

semilogxsemilogy半对数图

matlab三维作图

plot3(x,y,z)三维线条图

t=0:

pi/50:

15*pi;

plot3(sin(t),cos(t),t,'r*')与plot相似

v=axis返回各个轴的范围

text(0,0,0,'origin')在某个坐标点加入文字

plot3增加维数可以一次画多个图,使所个二维图形眼一个轴排列

三维网线图的绘制

mesh(x,y,z)网格图

mesh(x,y,z,c)四维作图,(x,y,z)代表空间三维,c代表颜色维

mesh(…,’propertyname’,propertyvalue,…)设置曲面各属性的值

[x,y,z]=sphere(12);

mesh(x,y,z),hiddenoff曲面设置为透明

meshc(x,y,z)画网格图和基本的等值线图

meshz(x,y,z)画包含零平面的网格图

waterfall(x,y,z)与mesh一样,只是在效果上它的网格线只在x轴一个方向出现,呈瀑布状水线

两个变量的标量指令meshgrid(x)或meshgrid(x,y)(p179)

将两个一维向量生成两个二维向量,以便进行z=f(x,y)运算,算出z的所有值,z为xy的标量指令

[X,Y]=meshgrid(x)meshgrid(x,x)的简略式

[X,Y]=meshgrid(x,y)

[X,Y,Z]=meshgrid(x,y,z)用于三维图形的绘制

[x,y]=meshgrid([-2:

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

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1