MATLAB绘图MATLAB应用设计.docx

上传人:b****0 文档编号:12484814 上传时间:2023-04-19 格式:DOCX 页数:35 大小:27.25KB
下载 相关 举报
MATLAB绘图MATLAB应用设计.docx_第1页
第1页 / 共35页
MATLAB绘图MATLAB应用设计.docx_第2页
第2页 / 共35页
MATLAB绘图MATLAB应用设计.docx_第3页
第3页 / 共35页
MATLAB绘图MATLAB应用设计.docx_第4页
第4页 / 共35页
MATLAB绘图MATLAB应用设计.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

MATLAB绘图MATLAB应用设计.docx

《MATLAB绘图MATLAB应用设计.docx》由会员分享,可在线阅读,更多相关《MATLAB绘图MATLAB应用设计.docx(35页珍藏版)》请在冰豆网上搜索。

MATLAB绘图MATLAB应用设计.docx

MATLAB绘图MATLAB应用设计

1.1基本函数

常用函数表:

sin()正弦(变量为弧度)

cot()余切(变量为弧度)

sind()正弦(变量为度数)

cotd()余切(变量为度数)

asin()反正弦(返回弧度)

acot()反余切(返回值为弧度)

asind()反正弦(返回值为度数)

acotd()反余切(返回值为度数)

cos()余弦(变量为弧度)

exp()指数

cosd()余弦(变量为度数)

log()对数

acos()余正弦(返回值为弧度)

log10()以10为底对数

acosd()余正弦(返回值为度数)

sqrt()开方

tan()正切(变量为弧度)

realsqrt()返回值为非负根

tand()正切(变量为度数)

abs()取绝对值

atan()反正切(返回弧度)

angle()返回值为复数的相位角

atand()反正切(返回度数)

mod(x,y)返回x/y的余数

sum()向量元素求和

1.2构造矩阵的方法

可以直接用[]来输入数组,也可以用以下提供的函数来生成矩阵。

ones()创建一个所有元素都为1的矩阵,其中可以制定维数

zeros()创建一个所有元素都为0的矩阵

eye()创建对角元素为1,其他元素为0的矩阵

diag()根据向量创建对角矩阵,即以向量的元素为对角元素

rand()创建随机矩阵,服从均匀分布

randn()创建随机矩阵,服从正态分布

randperm()创建随机行向量

horcatC=[A,B],水平聚合矩阵,还可以用cat(1,A,B)

vercatC=[A;B],垂直聚合矩阵,还可以用cat(2,A,B)

repmat(M,v,h)M在垂直方向上聚合v次水平方向上聚合h次

blkdiag(A,B)以A和B为块创建块对角矩阵

length返回矩阵最长维的的长度

ndims返回维数

numel返回矩阵元素个数

size返回每一维的长度,[rows,cols]=size(A)

reshape重塑矩阵

rot90旋转矩阵90度,逆时针方向

fliplr沿垂轴翻转矩阵

flipud沿水平轴翻转矩阵

transpose沿主对角线翻转矩阵

ctranspose转置矩阵,也可用A’或A.’

inv矩阵的逆

det矩阵的行列式值

trace矩阵对角元素的和

norm矩阵或矢量的范数,norm(a,1),norm(a,Inf)…….

rank求出矩阵的秩

pinv求伪逆矩阵

1.3多项式运算

多项式MATLAB里面的多项式是以向量来表示的。

其具体操作函数如下:

conv多项式的乘法

deconv多项式的除法,【a,b】=deconv(s),返回商和余数

poly求多项式的系数(由已知根求多项式的系数)

polyeig求多项式的特征值

polyfit(x,y,n)多项式的曲线拟合,x,y为被拟合的向量,n为拟合多

项式阶数

polyder求多项式的一阶导数,polyder(a,b)返回ab的导数

[a,b]=polyder(a,b)返回a/b的导数。

polyint多项式的积分

polyval求多项式的值

polyvalm以矩阵为变量求多项式的值

residue部分分式展开式

roots求多项式的根(返回所有根组成的)

2.1函数运算

2.1.1极限

在MATLAB中用limit指令求符号函数的极限。

(1)一重极限

如:

求f(x)=(e^(x^2)-1)/(x-1)在x→0时的极限。

symsxy

y=limit((exp(x^2)-1)/x-1,x,0)%一重极限

结果为:

y=

-1

(2)二重极限

如:

求x^2+y在x→2,y→1时候的极限。

可以编M文件类型的函数。

MATLAB中目前没有现成的求二重极限的函数。

symsxyz

z=limit(limit(x^2+y,x,2),y,1)

结果为:

z=

5

2.1.2微分

在MATLAB中,指令diff用于求符号函数的微分。

(1)一阶微分

symsxt

f=3*x^2+cos(4*t);

g=diff(f)

%默认变量为x

gg=diff(f,t)

%变量为t

结果为:

g=

6*x

gg=

-4*sin(4*t)

(2)二阶微分

symsxt

f=3*x^2+cos(4*t);

g1=diff(f,2)

%默认变量为x

gg1=diff(f,t,2)

%变量为t

结果为:

g1=

6

gg1=

-16*cos(4*t)

2.1.3积分的计算 

在MATLAB中,int用于求符号函数的积分。

在数值计算可以利用trapz实现积分运算。

例:

symsxy

y=3*x+2*x^2+sin(-5*x)+cos(2*x);

g=int(y)

g=

cos(5*x)/5+sin(2*x)/2+(3*x^2)/2+(2*x^3)/3

2.1.4级数的计算

symsum(s,a,b)和symsum(s,v,a,b),其中symsum(s,v,a,b)表示指定变量为

v,v=a累加到v=b

例:

.

symsxkn

s1=k^2;

s2=symsum(s1,k,1,n)

s2=

(n*(2*n+1)*(n+1))/6

2.1.5求解代数方程

求出n位有效数字的数值解.具体步骤如下:

第一步:

定义变量symsxyz...;

第二步:

求解[x,y,z,...]=solve('eqn1','eqn2',...,'eqnN','var1','var2',...'varN');

第三步:

求出n位有效数字的数值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);...。

使用solve指令时,表达式的‘=’右边没有赋值时,MATLAB默认为等于0。

例:

symsx

x=solve('x^3+5*x^2+6*x')

x=

-3

-2

0

2.1.6微分方程

在MATLAB中dsolve用于解符号运算的微分方程。

下面的例子不仅解出了微分方程的解,而且还利用ezplot和plot混合绘图,使微分方程的解可视

化。

y=dsolve('x*D2y-3*Dy=x^2','y

(1)=0,y(5)=0','x')

xn=-1:

6;

yn=subs(y,'x',xn)%自变量x用数组代替

figure('numbertitle','off','name','by邓珊')

ezplot(y,[-1,6])

holdon

plot([1,5],[0,0],'.r','MarkerSize',20)

text(1,1,'y

(1)=0')

text(4,1,'y(5)=0')

title(['x*D2y-3*Dy=x^2',',y

(1)=0,y(5)=0'])

holdoff

结果为:

y=

(31*x^4)/468-x^3/3+125/468

yn=

0.66670.26710-1.3397-3.3675-4.10900.000014.1132

2.2矩阵运算

矩阵运算和数组运算是MATLAB的数值运算中的两大类运算。

矩阵运算是按矩阵运算法则进行的

运算;数组运算无论是何种运算操作都是对元素逐个进行。

2.2.1矩阵最大值

在MATLAB中max是求得最大值的指令,find指令用于在数组中找出符合条件的元素所在的行和

列。

A=[12,-9,27;16,53,-69;25,19,2;30,41,23]

N=max(max(A))

%或者N=max(A(:

))

%其中A(:

)表示引用A中所有的元素

[r,c]=find(N==A)

结果为:

A=

12-927

1653-69

25192

304123

N=

53

r=

2

c=

2

2.2.2矩阵最小值

在MATLAB中,min用于求得最小值。

例:

A=[5,11,24;10,24,5;6,6,2;9,13,17]

M=min(A(:

));

[r1,c1]=find(M==A)

结果为:

A=

51124

10245

662

91317

r1=

3

c1=

3

2.2.3矩阵均值

在MATLAB中,mean可以用于求取矩阵或者数组的均值。

例:

A=[1,3,7;9,6,4;2,8,5]

a=mean(mean(A))%或者a=mean(A(:

))

结果为:

A=

137

964

285

a=

5

2.2.4矩阵方差

在MATLAB中var用于求取方差。

例:

A=[25,18,36,45;88,92,69,54;73,49,34,84]

a=var(A)

A=

25183645

88926954

73493484

a=

1.0e+003*

1.08301.38100.38630.4170

2.2.5矩阵转置

设A为m×n阶矩阵(即m行n列),第i行j列的元素是a(i,j),即:

A=a(i,j)定义A的转置为这样一个

n×m阶矩阵B,满足B=a(j,i),即b(i,j)=a(j,i)(B的第i行第j列是元素A的第j行第i列元素),记A'=B。

直观来看,将A的所有元素绕着一条从第1行第1列元素出发的右下方45度的射线作镜面反转,即

得到A的转置。

在MATLAB中,只需在矩阵上加’即可实现矩阵的转置。

例:

A=[1,2,3;4,5,6;7,8,9]

B=A'

结果为:

A=

123

456

789

B=

147

258

369

2.2.6逆矩阵

如果两个矩阵乘积为单位阵,那么这两个矩阵互逆。

在MATLAB中,inv指令可以实现求已知矩阵的逆矩阵,且矩阵只能是方阵。

例:

A=[3,7,-3;-2,-5,2;-4,-10,3]

B=inv(A)

结果为:

A=

37-3

-2-52

-4-103

B=

59-1

-2-30

02-1

2.2.7行列式

在MATLAB中det用于求行列式。

例:

A=[-6,1,3;12,-4,9;-10,-1,16]

a=det(A)

结果为:

A=

-613

12-49

-10-116

a=

-108.0000

2.2.8特征值的计算

在MATLAB中eig用于求特征值。

例:

A=[1,-3,3;3,-5,3;6,-6,4]

[V,D]=eig(A)

结果为:

A=

1-33

3-53

6-64

V=

-0.40820.2440-0.4070i0.2440+0.4070i

-0.4082-0.4162-0.4070i-0.4162+0.4070i

-0.8165-0.6602-0.6602

D=

4.000000

0-2.0000+0.0000i0

00-2.0000-0.0000i

返回的D是矩阵A的特征值向量,V是特征值

2.2.9矩阵的相乘

只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。

一个m×n的矩阵a(m,n)左乘一个n×p

的矩阵b(n,p),会得到一个m×p的矩阵c(m,p)

例:

A=[2,-1,2;1,0,4;-3,1,0;0,1,1];

B=[3,1,0;0,0,1;-1,2,0];

C=A*B

结果为:

C=

46-1

-190

-9-31

-121

2.2.10矩阵的右除和左除

在MATLAB中有左除和右除两种矩阵的除法。

例:

右除:

A=[5,8,6;2,1,7;4,9,3];

B=[2,4,7;3,5,7;8,5,1];

C=A/B

结果为:

C=

-5.39136.3043-0.3913

7.9130-7.04350.9130

-12.260912.8696-1.2609

左除:

A=[5,8,6;2,1,7;4,9,3];

B=[2,4,7;3,5,7;8,5,1];

C=A\B

结果为:

C=

-9.2500-4.00004.0000

4.17501.8000-1.7000

2.47501.60000.1000

2.2.11矩阵的幂运算

矩阵的幂指运算要在前面加点,矩阵的乘法和除法也必须在前面加点。

例:

A=[7,3,-5,1;2,-6,8,4;-1,3,-2,7;-7,9,12,-3]

B=A.^3

结果为:

A=

73-51

2-684

-13-27

-7912-3

B=

34327-1251

8-21651264

-127-8343

-3437291728-275

2.3多项式运算

2.3.1多项式加减乘除

多项式的运算即多项式的系数矩阵的运算。

运算法则同矩阵的运算。

①多项式相加

例:

p=[-5,2,-6,3,8];

q=[7,9,-11,13,24];

m=p+q

结果为:

m=

211-171632

②多项式相减

例:

p=[-5,2,-6,3,8];

q=[7,9,-11,13,24];

m=p-q

结果为:

m=

-12-75-10-16

③多项式相乘

例:

p=[10,12,8,17,28];

q=[2,13,-25,6,4];

M=conv(p,q)

结果为:

M=

20154-78-10218935-566236112

④多项式相除

例:

p=[10,12,8,17,28];

q=[2,13,-25,6,4];

[s,r]=deconv(p,q)

结果为:

s=

5

r=

0-53133-138

2.3.2多项式求导

其中p是多项式的系数,从左到右幂依次降低。

例:

p=[4,7,3,6,5];

q=polyder(p)

结果为:

q=

162166

2.3.3多项式求根

在MATLAB中roots指令用于求多项式的根。

例:

p=[1,3,7,5,9];

q=roots(p)

结果为:

q=

-1.5058+1.7569i

-1.5058-1.7569i

0.0058+1.2965i

0.0058-1.2965i

2.3.4多项式求值

在polyval指令用于求多项式的值。

例:

p=[2,5,7,3,4];

x=7;

y=polyval(p,x)

结果为:

y=

6885

2.3.5多项式的部分分式展开

在MATLAB中residue命令可用于多项式的部分分式展开。

例:

A=[8,21,15,37];

B=[2,4,-3,1,6];

[r,p,k]=residue(A,B)

结果为:

r=

-0.1940

0.5061-2.7543i

0.5061+2.7543i

3.1818

p=

-2.4888

0.7444+0.8070i

0.7444-0.8070i

-1.0000

k=

[]

2.3.6多项式的拟合

在MATLAB中指令polyfit用于求数据的拟合多项式。

可以通过polyval指令给求得的多项式赋值,

数值化后就可以通过数值画出图形。

这种方法可以用于对一些数据的预测。

例:

x0=0:

0.1:

1;

y0=[-0.358,1.817,2.983,4.925,5.03,4.56,3.91,4.57,3.46,5.35,9.34];

%求拟合多项式

n=3;

p=polyfit(x0,y0,n)

poly2str(p,'x')

%以习惯的方式显示结果

%图示拟合情况

xx=0:

0.01:

1;

yy=polyval(p,xx);

figure('numbertitle','off','name','by邓珊')

plot(xx,yy,'-b',x0,y0,'.r','MarkerSize',20)

legend('拟合曲线','原始数据','Location','SouthEast')

xlabel('x')

结果为:

p=

54.9909-83.854738.4798-0.8690

ans=

54.9909x^3-83.8547x^2+38.4798x-0.86898

2.3.7多项式插值运算

插值是在离散数据之间补充一些数据,使这组离散数据能够符合某个连续函数。

插值是计算数学

中最基本和最常用的手段,是函数逼近理论中的重要方法。

2.3.7.1一维插值

一维插值在MATLAB中有两种方法:

a多项式插值;

b建立在FFT上的插值;

①多项式插值

yi=interp1(x,y,xi,method)

x是坐标向量,y是数据向量,xi是待估计点向量,method是插值方法,

method有四种:

anearest,最近点插值法,通过四舍五入法取与最近的已知数据点的值。

blinear,线性插值,用直线连接数据点,插值点值位于直线上。

cspline,样条插值,用三次样条曲线通过数据点,然后根据曲线进行插值。

dcubic,立方插值,用三次曲线拟和并通过数据点。

以上四种方法得出的数据值一个比一个精确,而所需内存及计算时间也一个比一个要大要长.

②建立在FFT上的插值

这种方法利用了快速傅立叶变换

y=interpft(x,n),其中,x含有周期性的函数值。

本例在函数y=sinx上取10个点进行插值,得到插值函数,该函数是y=sinx的一个逼近,作图

观察其逼近效果。

建立M文件,源程序1为:

x=0:

10;

y=sin(x);

xi=0:

.25:

10;%在两个基准数据间插入3个点

yi1=interp1(x,y,xi,'*nearest');

yi2=interp1(x,y,xi,'*linear');

yi3=interp1(x,y,xi,'*spline');

yi4=interp1(x,y,xi,'*cubic');

%分别用四种方法求中间插值

figure('numbertitle','off','name','by邓珊')

subplot(2,2,1)

%在同一个窗口里画出两行两列图形

plot(x,y,'o',xi,yi1,':

')

%在同一个图中画出两条曲线,便于比较

title('图1:

最近点插值')

legend('原始数据','最近点插值')

subplot(2,2,2)

plot(x,y,'o',xi,yi2,':

')

title('图2:

线性插值')

legend('原始数据','线性插值')

subplot(2,2,3)

plot(x,y,'o',xi,yi3,':

')

legend('原始数据','样条插值')

title('图3:

样条插值')

subplot(2,2,4)

plot(x,y,'o',xi,yi4,':

')

title('图4:

立方插值')

legend('原始数据','立方插值')

运行结果为:

图3一维插值1

建立M文件,源程序2为:

x=0:

10;%给出已知基准数据

y=sin(x);

xi=0:

0.25:

10;%在两个基准数据间插入3个点

yi1=interp1(x,y,xi,'*nearest');

yi2=interp1(x,y,xi,'*linear');

yi3=interp1(x,y,xi,'*spline');

yi4=interp1(x,y,xi,'*cubic');%分别用4种方法求中间插值

figure('numbertitle','off','name','by邓珊')

plot(x,y,'o',xi,yi1,'b:

',xi,yi2,'g-x',xi,yi3,'k.-',xi,yi4,'r--')

%绘图,并标注个曲线代表的插值方法,如图所示

title('图五:

一维插值比较')

legend('原始数据','最近点插值','线性插值','样条插值','立方插值')

set(gca,'ytick',[-101]);%改变网格线点

gridon

运行结果为:

图4一维插值2

由上图可得,样条插值效果最好,立方插值次之,其次线性插值,最近点插值效果最差。

2.3.7.2二维插值

ZI=interp2(X,Y,Z,XI,YI,method)

method有三种:

anearest寻找最近数据点,由其得出函数值;

blinear二维线性插值

ccubic二维三次插值

3二维函数图的绘制

3.1M文件的建立

MATLAB是解释型语言,为了简化植入程序的繁琐性,MATLAB提供了2中方法来解决这个问

题-----函数和脚本,两种方法的根本都是建立M文件,M文件的好处是它可以保存命令,还可以

轻易的修改命令,也可以调用已经写好的M文件。

3.2plot指令

3.2.1plot的功能

1、plot命令自动打开一个图形窗口Figure

2、用直线连接相邻两数据点来绘制图形

3、根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定

坐标轴,可把x,y轴用对数坐标表示

4、可单窗口单曲线绘图;可单窗口多曲线绘图;可单窗口多曲线分图绘图;可多窗口绘图

5、可任意设定曲线颜色和线型

6、可给图形加坐标网线和图形加注功能

3.2.2plot的调用格式

plot(x)——缺省自变量绘图格式,x为向量,以x元素值为纵坐标,以相应元素下标为横坐标绘图

plot(x,y)——基本格式,以y(x)的函数关系作出直角坐标图,如果y为n×m的矩阵,则以x为自

变量,作出m条曲线。

plot(x1,y1,x2,y2)——多条曲线绘图格式。

plot(x,y,’s’)——开关格式,开关量字符串s设定曲线颜色和绘图方式。

表1离散数据点形允许设置值

符号含义符号含义

b蓝g绿

r红c青

y黄m品红

k黑w白

表2连续线形允许设置值

符号含义符号含义

-细实线-.点划线

虚点线—虚划线

表3点线色彩允许设置值

符号含义符号含义符号含义

d菱形符x叉字符<朝左三角形

h

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

当前位置:首页 > 高等教育 > 教育学

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

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