管理数学实验- MATLAB在管理运筹中的应用 2-管理数学实验-MATLAB基础_第1页
管理数学实验- MATLAB在管理运筹中的应用 2-管理数学实验-MATLAB基础_第2页
管理数学实验- MATLAB在管理运筹中的应用 2-管理数学实验-MATLAB基础_第3页
管理数学实验- MATLAB在管理运筹中的应用 2-管理数学实验-MATLAB基础_第4页
管理数学实验- MATLAB在管理运筹中的应用 2-管理数学实验-MATLAB基础_第5页
已阅读5页,还剩184页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章MATLAB基础

1、MATLAB语言概述

2、MATLAB的基本运算

3、MATLAB绘图

4、MATLAB的符号处理

5、MATLAB数据的输入输出6、MATLAB数据统计描述和分析1、MATLAB语言概述1.1MATLAB语言的发展matlab语言是由美国的CleverMoler博士于1980年开发的MATLAB=

MatrixLaboratory它将一个优秀软件的易用性与可靠性、通用性与专业性、一般目的的应用与高深的科学技术应用有机的结合MATLAB是一种直译式的高级语言,比其它程序设计语言简单易用2000年,发布MATLAB6.0;2002年,发布MATLAB6.5;2004年,发布MATLAB7.0;2005年,发布MATLAB7.1;2006年3月,发布MATLABR2006a(V7.2);2006年9月,发布MATLABR2006b(V7.3);2007年3月,发布MATLABR2007a(V7.4);2007年9月,发布MATLABR2007b(V7.5);2008年3月,发布MATLABR2008a(V7.6);2008年9月,发布MATLABR2086b(V7.7);2009年3月,发布MATLABR2009a(V7.8);2009年9月,发布MATLABR2009b(V7.9);2010年3月,发布MATLABR2010a(V7.10);2010年9月,发布MATLABR2010b(V7.11);2011年4月,发布MATLABR2011a(V7.12);2011年9月,发布MATLABR2011b(V7.13);2012年3月,发布MATLABR2012a(V7.14);2012年9月,发布MATLABR2012b(V8.0);2013年3月,发布MATLABR2013a(V8.1)。MATLABR2017b。1.2matlab在各领域的应用工业研究与开发数学教学,特别是线性代数数值分析和科学计算方面的教学与研究电子学、控制理论和物理学等工程和科学经济学、化学和生物学等计算问题的所有其他领域中的教学与研究各种模型的分析与计算MATLAB语言的简洁高效性MATLAB强大的科学运算功能MATLAB丰富的绘图功能MATLAB庞大的工具箱与模块集MATLAB强大的动态系统仿真功能MATLAB作为线性系统的一种分析和仿真工具,是理工科学生应该掌握的技术工具,它作为一种编程语言和可视化工具,可解决工程、科学计算和数学学科中许多问题。1.3MATLAB语言的功能强大的数值(矩阵)运算广泛的符号运算功能高级与低级兼备的图形功能计算结果的可视化可靠的容错功能应用灵活的兼容与接口功能信息量丰富的联机检索功能(1)矩阵运算功能MATLAB提供了丰富的矩阵运算处理功能基于矩阵运算的处理工具。变量

矩阵,运算

矩阵的运算例如C=A+B,A,B,C都是矩阵,是矩阵的加运算一个数,x=5,MATLAB看做是一个11的矩阵(2)符号运算功能符号运算即用字符串进行数学分析允许变量不赋值而参与运算用于解代数方程、微积分、复合导数、积分、二重积分、有理函数、微分方程、泰乐级数展开、寻优等等,可求得解析符号解(3)丰富的绘图功能与计算结果的可视化具有高层绘图功能——两维、三维绘图具有底层绘图功能——句柄绘图使用plot函数可随时将计算结果可视化(4)图形化程序编制功能动态系统进行建模、仿真和分析的软件包用结构图编程,而不用程序编程只需拖几个方块、连几条线,即可实现编程功能(5)丰富的MATLAB工具箱MATLAB主工具箱符号数学工具箱SIMULINK仿真工具箱控制系统工具箱信号处理工具箱图象处理工具箱通讯工具箱系统辨识工具箱神经元网络工具箱金融工具箱优化工具箱……MATLAB中变量的命名规则是:(1)变量名必须是不含空格的字符串;(2)变量名以字母开头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号.(3)变量名区分大小写;(4)变量名最多不超过19个字符;

MATLAB的保留常量eps,pi,NaN,Inf,i,j,i=sqrt(-1)lastwarn,lasterr

1.4MATLAB语言基础特殊变量表数值型数据结构(1)双精度数值变量IEEE标准,64位(8字节),11指数位,53数值位和一个符号位-1.7*10308

至1.7*10308double()函数的转换(2)其他数据类型uint8,常用于图像表示和处理,8位int8(),int16(),int32(),uint16(),uint32()符号型变量数据类型(3)符号型,sym(A),常用于公式推导变量声明symsABCpositivesym(sin(x))采用变精度函数求值vpa(A),或vpa(A,n)例求出p

的300位有效数字

vpa(pi,300)MATLAB支持的其他数据结构(4)基本数值变量类型:双精度复数矩阵(5)字符串型数据:用单引号括起来(6)多维数组:是矩阵的直接扩展,多个下标(7)单元数组:将不同类型数据集成到一个变量名下面,用{}表示。例。(8)结构体:A.b,引用也用A.b,不是A->b(9)类与对象:可以定义重载函数返回例:单元(元胞)数组的创建C_str=char('北京理工大学','管理科学与工程系');R=reshape(1:9,3,3);Cn=[1+2i,1-2i];

S_sym=sym('sin(-3*t)*exp(-t)');%符号函数量(1)直接创建法之一:“外标识单元元素赋值法”(2)直接创建法之二:“编址单元元素内涵的直接赋值法”A(1,1)={C_str};A(1,2)={R};A(2,1)={Cn};A(2,2)={S_sym};A%显示单元数组类型B{1,1}=C_str;B{1,2}=R;B{2,1}=Cn;B{2,2}=S_sym;celldisp(B)%显示单元数组内容结构体示例:通过温室数据(包括温室名、容积、温度、湿度等)演示:结构体green_house的创建和显示。(它有三个域:name,volume,parameter。而parameter又有三个子域:temperature,humidity。)(1)直接对域赋值产生“结构体”,即结构数组。green_=‘一号房’;结构的域由(结构名).(域名)标识。green_house.volume='2000立方米';green_house.parameter.temperature=…[31.230.431.628.7

29.731.130.929.6];green_house.parameter.humidity…=[62.159.557.761.562.061.959.257.5];(2)显示“结构体”结构和内容:green_house,……返回MATLAB的基本语句结构

>>A=[1,2,3;45,6;7,8,0]>>A=[1,2,3;45,6;7,8,0];>>A=[[A;[1,2,3]][4;5;6;7];函数调用语句冒号表达式[返回变量列表]=函数名(输入变量列表)[a,b,c]=myfun(d,e,f,g)v=s1:s2:s3例用不同的步距生成(0,p)间向量

>>v1=0:0.2:pi

>>v2=0:-0.1:pi

>>v3=0:pi

>>v4=pi:-1:0

>>v5=[0:0.2:pi,pi]

>>v6=[pi:-1:00]子矩阵提取基本语句格式例子矩阵提取提取A

矩阵全部奇数行,所有列提取A

矩阵3,2,1行、2,3,4列构成子矩阵将A

矩阵左右翻转B3=A(:,end:-1:1)B1=A(1:2:end,:)B2=A([3,2,1],[2,3,4])B=A(v1,v2)2.1创建矩阵2.2矩阵运算2.3多项式运算2.4线性方程组2.5MATLAB语言流程控制2.6数学函数2.7.m文件2、MATLAB的基本运算2.1创建矩阵规则:矩阵元素必须用[]括住矩阵元素必须用逗号或空格分隔

[]内矩阵的行与行之间必须用分号分隔矩阵元素任何matlab表达式可以是实数,也可以是复数,复数可用i,j输入

a=[123;456]x=[2pi/2;sqrt(3)3+5i]

矩阵的建立逗号或空格作用:分隔某一行的元素。分号作用:区分不同的行。Enter键作用之一:输入矩阵时,按Enter键开始一新行。注意:输入矩阵时,严格要求所有行有相同的列。

例m=[1234;5678;9101112]p=[111122223333]创建简单的数组x=[a,b,

c,

d,

e,

f]创建包含指定元素的行向量x=first:last

创建从first开始,加1计数,到last结束的行向量x=first:increment:last创建从first开始,加increment计数,last结束的行向量x=linspace(first,last,n)创建从first开始,到last结束,有n个元素的行向量x=logspace(first,last,n)创建从10first开始,到10last结束,n个元素为10.^linspace(first,last,n)的对数分隔行向量数组元素的访问(1)访问一个元素:x(i)表示访问数组x的第i个元素。(2)访问一块元素:x(b:s:e)表示访问数组x的从第b个元素开始,以步长为s到第e个元素(但不超过e),s可以为负数,s缺省时为1。(3)直接使用元素编址序号:x([ijkl])表示提取数组x的第i、i、k、l个元素构成一个新的数组[x(i),x(j),x(k),x(l)]。符号的作用逗号和分号的作用逗号和分号可作为指令间的分隔符,matlab允许多条语句在同一行出现。分号如果出现在指令后,屏幕上将不显示结果。当一个指令或矩阵太长时,可用”…”续行冒号的作用用于生成等间隔的向量,默认间隔为1。用于选出矩阵指定行、列及元素。循环语句用matlab函数创建矩阵a=[]——空阵[],大小为零,Matlab允许输入空阵,当一项操作无结果时,返回空阵。rand——随机矩阵,b=rand([m,]n)eye——单位矩阵,c=eye(n)zeros——全部元素都为0的矩阵,d=zeros([m,]n)ones——全部元素都为1的矩阵,e=ones(m,n)还有伴随矩阵、稀疏矩阵、魔方矩阵、对角矩阵、范德蒙等矩阵的创建,就不一一介绍了。注意:matlab严格区分大小写字母。

matlab函数名必须小写。矩阵中元素的操作(1)矩阵A的第r行:A(r,:)(2)矩阵A的第j列:A(:,j)(3)依次提取矩阵A的每一列,将A拉伸为一列向量:

A(:)(4)取矩阵A的第i1~i2行、第j1~j2列构成新矩阵:

A(i1:i2,j1:j2)(5)逆序提取矩阵A的第i1~i2行,构成新矩阵:

A(i2:-1:i1,:)(6)逆序提取矩阵A的第j1~j2列,构成新矩阵:

A(:,j2:-1:j1)(7)删除A的第i1~i2行,构成新矩阵:A(i1:i2,:)=[](8)删除A的第j1~j2列,构成新矩阵:A(:,j1:j2)=[](9)将矩阵A和B拼接成新矩阵:[A,B];[A;B]2.2矩阵运算1)矩阵加、减(+,-)运算规则:相加、减的两矩阵必须有相同的行和列;允许参与运算的两矩阵之一是标量:标量与矩阵的所有元素分别进行加减操作。2)矩阵乘()运算规则:A矩阵的列数必须等于B矩阵的行数标量可与任何矩阵相乘。a=[123;456;780];b=[1;2;3];c=a*bc=143223

3)矩阵乘方——a^n,a^p,p^a

a^p——a自乘p次幂

方阵>1的整数对于p的其它值,计算将涉及特征值和特征向量如果p是矩阵,a是标量a^p使用特征值和特征向量自乘到p次幂;如a,p都是矩阵,a^p则无意义。当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。if[V,D]=eig(a),thena^p=V*D.^p/V4)矩阵的其它运算inv——矩阵求逆,inv(A)det——方阵行列式的值,det(A)eig——矩阵的特征值,[V,D]=eig[A]diag——对角矩阵,

'——矩阵转置sqrt——矩阵开方5)借助cat,repmat,reshape等函数构作高维数组

cat(3,ones(2,3),ones(2,3)*2,ones(2,3)*3)

ans(:,:,1)=ans(:,:,2)=ans(:,:,3)=111222333111222333reshape(1:12,2,2,3)

ans(:,:,1)=ans(:,:,2)=ans(:,:,3)=135791124681012repmat(ones(2,3)*2,[1,1,3])ans(:,:,1)=ans(:,:,2)=ans(:,:,3)=2222222222222222226)矩阵的一些特殊操作矩阵的变维

a=[1:12];b=reshape(a,3,4)c=zeros(3,4);c(:)=a(:)矩阵的变向

rot90:旋转;fliplr:左右翻;flipud:上下翻矩阵的抽取

diag:抽取主对角线;tril:抽取主下三角;

triu:抽取主上三角维数、大小、长度和降维

ndims(A);size(A);length(A);squeeze(A)

7)矩阵的数组运算

数组运算指元素对元素的算术运算,与通常意义上的由符号表示的线性代数矩阵运算不同数组加减(.+,.-)(与矩阵加减等效)

a.+b=a+ba.-b=a–b数组乘除(,./,.\)ab——a,b两数组必须有相同的行和列两数组对应元素相乘。a./b=b.\aa.\b=b./a——

给出a,b对应元素间的商例:a=[123];b=[456];c1=a.\b;c2=b./ac1=4.00002.50002.0000c2=4.00002.50002.0000数组乘方(.^)—元素对元素的幂例:a=[123];b=[456];z=a.^2z=1.004.009.00z=a.^bz=1.0032.00729.008)矩阵的逻辑运算逻辑变量:当前版本有逻辑变量对double变量来说,非0表示逻辑1逻辑运算(相应元素间的运算)与运算A&B或运算A|B非运算~A异或运算xor(A,B)9)矩阵的比较运算各种允许的比较关系

>,>=,<,<=,==,~=,find(),all(),any()实例Linear_index=find(R>0)

>>A=[1,2,3;4,5,6;7,8,9];find(A>=5)’,any(A>=5)>>[i,j]=find(A>=5)>>all(A>=5),A>=510)数据类型转换函数int2str;num2str;mat2str;str2mat;str2numeval(Expression)

eval(expression,catch_expr)[a1,a2,a3,...]=eval(‘function(b1,b2,b3,...)’)strcat(s1,s2,...),strvcat(s1,s2,...)fprintf(fileID,formatSpec,A1,…,An),str=sprintf(formatSpec,A1,…,An),A=sscanf(str,format)A=eye(2,4);A_str1=int2str(A)

rand('state',0);B=rand(2,4);B3=num2str(B,3)B_str=mat2str(B,4)fprintf,sprintf,sscanfs_s=sprintf('%.10e\n',B)

[s,errmsg]=sprintf(format,A,...)11)基本数论运算RemainderGreatestcommondivisorLeastcommonmultiplePrimefactorsRationalfractionapproximation函数名调用格式floor()ceil()round()fix()rat()rem()gcd()lcm()factor()isprime()n=floor(x)n=ceil(x)n=round(x)n=fix(x)[n,d]=rat(x)B=rem(A,C)k=gcd(n,m)k=lcm(n,m)k=factor(n)v1=isprime(v)例对下面的数据进行取整运算

-0.2765,0.5772,1.4597,2.1091,1.191,-1.6187例3×3Hilbert矩阵,试用rat()函数变换例1856120,1483720,最大公约数、最小公倍数,质因数分解例1-1000间质数N./DapproximatingAmatlab语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。

f(x)=anxn+an-1xn-1+……+a0

可用行向量p=[anan-1……a1a0]表示poly——

产生特征多项式系数向量特征多项式一定是n+1维的特征多项式第一个元素一定是12.3多项式运算例:a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00p是多项式p(x)=x3-6x2-72x-27的matlab描述方法,可用:p1=poly2str(p,‘x’)—函数文件,显示数学多项式的形式p1=x^3-6x^2-72x-27roots——

求多项式的根a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00r=roots(p)r=12.12-5.73——

显然r是矩阵a的特征值

-0.39可用poly返回多项式形式p2=poly(r)p2=1.00-6.00-72.00-27.00conv,convs多项式乘运算例:a(x)=x2+2x+3;b(x)=4x2+5x+6;c=(x2+2x+3)(4x2+5x+6)a=[123];b=[456];c=conv(a,b)=conv([123],[456])c=4.0013.0028.0027.0018.00p=poly2str(c,'x')p=4x^4+13x^3+28x^2+27x+18deconv多项式除运算a=[123];c=[4.0013.0028.0027.0018.00]d=deconv(c,a)d=4.005.006.00[d,r]=deconv(c,a)余数c除a后的整数多项式微分matlab提供了polyder函数多项式的微分。命令格式:polyder(p):求p的微分polyder(a,b):求多项式a,b乘积的微分[p,q]=polyder(a,b):求多项式a,b商的微分

deconv(p,q)例:a=[12345];poly2str(a,'x')ans=x^4+2x^3+3x^2+4x+5b=polyder(a)

b=4664poly2str(b,'x')

ans=4x^3+6x^2+6x+42.4代数方程组求解Matlab中有两种除运算左除和右除。对于方程Ax=b,A为m×n矩阵Am×n,有三种情况:当n=m时,此方程成为“恰定”方程当n<m时,此方程成为“超定”方程当n>m时,此方程成为“欠定”方程matlab定义的除运算可解上述三种方程1)恰定方程组的解方程Ax=b(A为非奇异)

x=A-1

b两种解语句:x=inv(A)b

——

采用求逆运算解方程x=A\b——

采用左除运算解方程2)超定方程组的解方程Ax=b,n<m时此时不存在唯一解。方程解(A'A)x=A'bx=(A'A)-1

A'b——

求逆法

x=A\b——matlab用最小二乘法找一个近似的解。A=[12;23;34];b=[1;2;3];

解1

x=A\b

解2x=inv(A'A)

A'b

x=x=1.001.0000.00

=Ax=b3)欠定方程组的解当方程数少于未知量个数时,即不定情况,有无穷多个解存在。matlab可求出两个解:用除法求的解x是具有最多零元素的解基于伪逆pinv求得具有最小长度或范数的解A=[123;234];b=[1;2];

x=A\bx=pinv(A)bx=x=1.000.8300.330-0.17=Ax=b2.4MATLAB语言流程控制

2.4.1循环结构for结构while结构fori=V

循环结构体endwhile(条件式)

循环结构体end例用循环求解例用循环求解求最小的m例求>>tic,s=0;fori=1:100000,s=s+1/2^i+1/3^i;end;toc>>tic,i=1:100000;s=sum(1./2.^i+1./3.^i);toc

2.5.2条件结构if(条件表达式1)%若条件1满足,则执行语句组1

语句组1%可以嵌套下一层的

if结构elseif(条件表达式2)%若条件2满足,则执行语句组2

语句组2

┆┆%可设置n种转移条件

else%上面n种条件均不满足,则执行语句组n+1

语句组n+1end

s=0;form=1:100000s=s+i;

ifs>10000

break;end;end;2.5.3开关结构switch(开关表达式

)case表达式1%若表达式1与开关表达式一致,则执行语句组1

语句组1%可以嵌套下一层的

case结构case{表达式2.1,表达式2.2,…

表达式2-m}

语句组2%若条件2之一满足表达式

,则执行语句组2

┆┆%可设置n种开关表达式otherwise%上面n种表达式均不满足,则执行语句组n+1

语句组n+1end和C语言的区别当开关表达式的值等于某表达式,执行该语句后结束该结构,不用break同时满足若干个条件之一,则用单元形式otherwise语句,不是default程序的执行结果和各个case顺序无关case语句中条件不能重复,否则列在后面的条件将不能执行2.5.4试探结构全新结构try,

语句段1,

catch,

语句段2,end2.6数学函数函数是MATLAB编程的主流方法除了函数外,还可以采用M-script文件M-script适合于小规模例前例中,若最大值不为10000,需修改程序,如M-script更适合变化的K。

MATLAB的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为MATLAB定义新函数,为此必须编写函数文件.函数文件是文件名后缀为M的文件,这类文件的第一行必须是一特殊字符function开始,格式为:

function因变量名=函数名(自变量名)函数值的获得必须通过具体的运算实现,并赋给因变量.

2.7.M文件M文件建立方法:(1)在Matlab中,点:File->New->M-file(2)在编辑窗口中输入程序内容

(3)点:File->Save,存盘,M文件名必须与函数名一致。Matlab的应用程序也以M文件保存。例:定义函数f(x1,x2)=100(x2-x12)2+(1-x1)2function

f=fun(x)f=100*(x(2)-x(1)^2)^2+(1-x(1))^21)建立M文件:fun.m2)可以直接使用函数fun.m例如:计算f(1,2),只需在Matlab命令窗口键入命令:x=[12]fun(x)2.7.1MATLAB语言函数的基本结构

nargin,nargout,varargin,varargoutfunction[返回变量列表]=函数名(输入变量列表)

注释说明段,有%引导

输入、返回变量格式的检测

函数体语句段例对于变化K的解决方案无需修改程序function[m,s]=findsum(k)s=0;m=0;

while(s<=k),m=m+1;m=m+1;s=s+m;end>>[m,s]=findsum(145323)例若只给出一个输入参数,则会自动生成一个方阵在函数中给出合适的帮助信息检测输入和返回变量的个数editmyhilbn×m阶的Hilbert矩阵

functionA=myhilbert(n,m)

ifnargin==1,m=n;elseifnargin==0|nargin>2error(‘Wrongnumberofinputarguments.’);else

fori=1:nforj=1:mA(i,j)=1/(i+j-1);endendendhelpmyhilbertA=myhilbert(3,4)A=myhilbert(4)例函数的递归调用:阶乘functionk=my_fact(n)

ifn>1%如果n>1,则进行递归调用

k=n*my_fact(n-1);

elseifany([01]==

n%0!=1!=1

k=1;

endendn!=n*(n-1)!2.7.2可变输入输出个数例可以计算两个多项式的积用varargin实现任意多个多项式的积p=conv(p1,p2)functionp=convs(varargin)p=1;for1:length(varargin),p=conv(p,varargin{i});

endendP=[12405];Q=[12];F=[123]D=convs(P,Q,F)2.7.3inline函数和匿名函数inline函数,可以免去文件MATLAB7.0之后fun=inline(‘函数内容’,自变量列表)fun=@(自变量列表)函数内容,例如,f=@(x,y)sin(x.^2+y.^2)3、Matlab绘图——Matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是其它语言所不能比拟的。matlab语言的绘图功能

不仅能绘制几乎所有的标准图形,而且其表现形式也是丰富多样的。

matlab语言不仅具有高层绘图能力,而且还具有底层绘图能力——句柄绘图方法。在面向对象的图形设计基础上,使得用户可以用来开发各专业的专用图形。3.1二维绘图3.1.1plot——

最基本的二维图形指令plot的功能:

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

用直线连接相邻两数据点来绘制图形根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴,可把x,y轴用对数坐标表示如果已经存在一个图形窗口,plot命令则清除当前图形,绘制新图形可单窗口单曲线绘图;可单窗口多曲线绘图;可单窗口多曲线分图绘图;可多窗口绘图可任意设定曲线颜色和线型可给图形加坐标网线和图形加注功能plot的调用格式

plot(x)——

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

plot(x,y)——

基本格式,以y(x)的函数关系作出直角坐标图,如果y为n×m的矩阵,则以x为自变量,作出m条曲线二维图形绘制基本语句构造向量:x=x1,x2,…,xny=y(x1),y(x2),…,y(xn)x=[x1,x2,…,xn]y=[y(x1),y(x2),…,y(xn)]plot(x,y)xx(x1,y1),(x2,y2)…,(xn,yn)plot(x1,y1,x2,y2,…,xn,yn)多条曲线绘图格式x选项取值指定曲线的线型和颜色表plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)plot(x,y,’s’)——

开关格式,开关量字符串s设定曲线颜色和绘图方式,使用颜色字符串的前1~3个字母,如

yellow—yel表示等。或plot(x1,y1,’s1’,x2,y2,’s2’,…)S的标准设定值如下:

字母颜色标点线型

y黄色·点线

m粉红○圈线

c亮蓝××线

r大红++字线

g绿色-实线

b蓝色星形线

w白色:虚线

k黑色-·(--)点划线Matlab线形:[+|o|*|.|x|square|diamond|v|^|>|<|pentagram|hexagram]square正方形

diamond菱形

pentagram五角星

hexagram六角星(1)单窗口单曲线绘图例:x=[0,0.48,0.84,1,0.91,0.6,0.14][x1,x2,x3,x4,x5,x6,x7,]plot(x)(2)单窗口多曲线绘图例:x=0:pi/100:2*pi;y=sin(x);y1=sin(x+0.25);y2=sin(x+0.5);plot(x,y,x,y1,x,y2)yy1y2例:y=sin(x);y1=sin(x+0.25);y2=sin(x+0.5);

y3=cos(x);y4=cos(x+0.25);y5=cos(x+0.5);

plot(x,[y',y1',y2',y3',y4',y5'])y3=cos(x);y4=cos(x+0.25);y5=cos(x+0.5);plot(x,y3);holdon;plot(x,y4);plot(x,y5);x=peaks;plot(x)x=1:length(peaks);y=peaks;plot(x,y)(3)单窗口多曲线分图绘图subplot——

子图分割命令调用格式:

subplot(m,n,p)

——

按从左至右,从上至下排列行列绘图序号subplot(1,3,1);plot(x,y)

subplot(1,3,2);plot(x,y3)

subplot(1,3,3);plot(x,y2)subplot(3,1,1);

plot(x,y)

subplot(3,1,2);

plot(x,y3)

subplot(3,1,3);

plot(x,y2)

subplot('position',[leftbottomwidthheight])Left,bottom,width,height

∈[0,1]clf;x=(pi*(0:1000)/1000)';y1=sin(x);y2=sin(10*x);y12=sin(x).*sin(10*x);subplot(2,2,1),plot(x,y1);axis([0,pi,-1,1])subplot(2,2,2),plot(x,y2);axis([0,pi,-1,1])subplot('position',[0.2,0.05,0.6,0.45]) plot(x,y12,'b-',x,[y1,-y1],'r:');axis([0,pi,-1,1])

subplot('position',[leftbottomwidthheight])Left,bottom,width,height

∈[0,1]clf;x=(pi*(0:1000)/1000)';y1=sin(x);y2=sin(10*x);y12=sin(x).*sin(10*x);subplot(2,2,1),plot(x,y1);axis([0,pi,-1,1])subplot(2,2,2),plot(x,y2);axis([0,pi,-1,1])subplot('position',[0.2,0.05,0.6,0.45]) plot(x,y12,'b-',x,[y1,-y1],'r:');axis([0,pi,-1,1])

(4)多窗口绘图figure(n)——创建窗口函数,n为窗口顺序号。x=0:pi/100:2*pi;y=sin(x);y1=sin(x+0.25);y2=sin(x+0.5);plot(x,y)——自动出现第一个窗口figure(2)plot(x,y1)——

在第二窗口绘图figure(3)plot(x,y2)——在第三窗口绘图(5)可任意设置颜色与线型例:plot(x,y,'r-',x,y1,'g:',x,y2,'b*')(6)图形加注功能将标题、坐标轴标记、网格线及文字注释加注到图形上,这些函数为:title('string','PropertyName',PropertyValue,...)

——

给图形加标题

xlabel('string')

——

给x轴加标注

ylabel('string')

——

给y轴加标注

text(x,y,'string')

——

在图形指定位置加标注

gtext('string')

——

将标注加到图形任意位置

gridon(off)

——

打开、关闭坐标网格线

legend

——

添加图例

axis

——

控制坐标轴的刻度例:t=0:0.1:10y1=sin(t);y2=cos(t);plot(t,y1,'r',t,y2,'b--');x=[1.7*pi;1.6*pi];y=[-0.3;0.8];s=['sin(t)';'cos(t)'];text(x,y,s);title('正弦和余弦曲线');legend('正弦','余弦')xlabel('时间t'),ylabel('正弦、余弦')gridaxissquare

axis的用法还有:

axis([xminxmaxyminymax])——用行向量中给出的值设定坐标轴的最大和最小值如axis([-2

205])axis(equal)——

将两坐标轴设为相等

axison(off)——

显示和关闭坐标轴的标记、标志axisauto——

将坐标轴设置返回自动缺省值(7)fplot——

绘制函数图函数fplot的调用格式:fplot(fun,lims)—

绘制函数fun在x区间lims=[xminxmax]的函数图。fplot(fun,lims,'corline')—以指定线形绘图。[x,y]=fplot(fun,lims)—

只返回绘图点的值,而不绘图。用plot(x,y)来绘图。fplot('[sin(x),tan(x),cos(x)]',2*pi*[-11-11])

fplot('humps',[01],'rp')(8)ezplot—符号函数的简易绘图函数ezplot的调用格式:ezplot(f)—这里f为包含单个符号变量x的符号表达式,在x轴的默认范围[-2*pi2*pi]内绘制f(x)的函数图ezplot(f,xmin,xmax)—给定区间ezplot(f,[xmin,xmax],figure(n))—指定绘图窗口绘图。ezplot('sin(x)')

ezplot('sin(x)','cos(y)',[-4*pi4*pi],figure(2))绘图:>>ezplot('sin(x)^2+cos(y)^2-1')例sin2(x)+con2(y)=1隐函数绘制及应用隐函数:例3.1.2其他二维图形绘制语句bar––––绘制直方图compass––––复数向量图(罗盘图)feather––––复数向量投影图(羽毛图)hist––––绘制统计直方图polar––––绘制极坐标图stairs––––绘制阶梯图comet––––绘制彗星曲线

errorbar––––绘制误差棒图

fill––––绘制二维多边形图

loglog––––绘制对数坐标图

quiver––––向量场图

stem––––绘制火柴杆图area––––区域图

rose––––绘制统计扇形图(玫瑰)pie––––饼图

convhull––––凸壳图

scatter––––离散点图fill:绘制二维多边形并填充颜色例:x=[12345];y=[41514];fill(x,y,'r')例,绘制阶梯曲线x=0:pi/20:2*pi;y=sin(x);stairs(x,y)例:阶梯绘图h2=[11;1-1];h4=[h2h2;h2-h2];h8=[h4h4;h4-h4];t=1:8;subplot(8,1,1);stairs(t,h8(1,:));axis('off')subplot(8,1,2);stairs(t,h8(2,:));axis('off')subplot(8,1,3);stairs(t,h8(3,:));axis('off')subplot(8,1,4);stairs(t,h8(4,:));axis('off')subplot(8,1,5);stairs(t,h8(5,:));axis('off')subplot(8,1,6);stairs(t,h8(6,:));axis('off')subplot(8,1,7);stairs(t,h8(7,:));axis('off')subplot(8,1,8);stairs(t,h8(8,:));axis('off')h2=[11;1-1];h4=[h2h2;h2-h2];h8=[h4h4;h4-h4];t=1:8;fori=1:8subplot(8,1,i);stairs(t,h8(i,:))axis('off')end例:绘制极坐标绘图t=0:2*pi/90:2*pi;y=cos(4*t);polar(t,y)例:绘制火柴杆绘图

t=0:0.2:2*pi;y=cos(t);stem(y)例:绘制直方图

t=0:0.2:2*pi;y=cos(t);bar(y)例:绘制彗星曲线图t=-pi:pi/500:pi;y=tan(sin(t))-sin(tan(t));comet(t,y)x=magic(6);area(x)x=[1234567];y=[0001000];pie(x,y)pie(x,y,{'North','South','East','West','middle','fa','white'})loadseamount

scatter(x,y,50,z)a=rand(200,1);b=rand(200,1);c=rand(200,1);

scatter(a,b,100,c,'p')3.2三维绘图三维绘图的主要功能:绘制三维线图绘制等高线图绘制伪彩色图绘制三维网线图绘制三维曲面图、柱面图和球面图绘制三维多面体并填充颜色3.2.1三维线图plot3——

基本的三维图形指令调用格式:plot3(x,y,z)——x,y,z是长度相同的向量plot3(X,Y,Z)——X,Y,Z是维数相同的矩阵plot3(x,y,z,s)——

带开关量plot3(x1,y1,z1,'s1',x2,y2,z2,'s2',…)二维图形的所有基本特性对三维图形全都适用。定义三维坐标轴大小

axis([xminxmaxyminymaxzminzmax

])gridon(off)绘制三维网格

text(x,y,z,‘string’)三维图形标注子图和多窗口也可以用到三维图形中例:绘制三维线图t=0:pi/50:10*pi;plot3(t,sin(t),cos(t),'r:')3.2.2三维饼图

pie3([43689])3.2.3三维多边形fill3=fill——

三维多边形的绘制和填色与二维多边形完全相同调用格式:

fill3(x,y,z,‘s’)——

与二维相同例:用随机顶点坐标画出5个粉色的三角形,并用黄色的○表示顶点y1=rand(3,5);y2=rand(3,5);y3=rand(3,5);fill3(y1,y2,y3,'m');holdon;plot3(y1,y2,y3,'yo')3.2.4三维网格图mesh——

三维网线绘图函数调用格式:

mesh(z)

——

z为n×m的矩阵,x与y

坐标为元素的下标

mesh(x,y,z)——x,y,z分别为三维空间的坐标位置例,矩阵的三维网线图z=rand(6);0.99610.77490.80010.13610.62210.12330.07820.81730.43140.86930.35100.18390.44270.86870.91060.57970.51320.24000.10670.08440.18180.54990.40180.41730.96190.39980.26380.14500.07600.04970.00460.25990.14550.85300.23990.9027z=round(z)

111010010100011110000100100000000101mesh(z)例:8阶hadamard矩阵的网线图h2=[11;1-1];h4=[h2h2;h2-h2]h8=[h4h4;h4-h4]111111111-11-11-11-111-1-111-1-11-1-111-1-111111-1-1-1-11-11-1-11-1111-1-1-1-1111-1-11-111-1mesh(h8)三维网线图作图要领生成坐标——[X,Y]=meshgrid(x,y)表达式点运算——Z=X.^2+Y.^2x——1×n的矩阵y——1×m的矩阵X,Y是n×m的矩阵,维数可任定X——nY——mZ——默认方位角:37。5º,俯角30º。m×n维meshgrid——

网线坐标值计算函数

z=f(x,y)—根据x,y坐标找出z的高度例:绘制z=x2+y2的三维网线图形

x=-5:5;y=x;[X,Y]=meshgrid(x,y)Z=X.^2+Y.^2

mesh(X,Y,Z)坐标矩阵坐标向量纵坐标矩阵绘图函数colormap([R,G,B])——

色图设定函数matlab的颜色数据集合为红、绿、蓝三颜色矩阵[R,G,B],维数m×3r,g,b在[01]区间连续取值,理论上颜色种类可达无穷多种matlab使用三维向量表示一种颜色,常用颜色数据见下表饱和色

[000]—黑色

[001]—兰色

[010]—绿色

[011]—浅兰

[100]—红色

[101]—粉红

[110]—黄色

[111]—白色调和色[]—

灰色[0.500]—

暗红色[10.620.4]—

铜色[0.4910.8]—

浅绿[0.4910.83]—宝石兰3.2.5三维曲面图surf——

三维曲面绘图函数,与网格图看起来一样与三维网线图的区别:网线图:线条有颜色,空挡是黑色的(无颜色)曲面图:线条是黑色的,空挡有颜色(把线条之间的空挡填充颜色,沿z轴按每一网格变化)调用格式:surf(x,y,z)——

绘制三维曲面图,x,y,z

为图形坐标向量例:[X,Y,Z]=peaks(30)※peaks为matlab自动生成的三维测试图形surf(X,Y,Z)

surfc(X,Y,Z)—带等高线的曲面图

[X,Y,Z]=peaks(30);surfc(X,Y,Z)surfl(X,Y,Z)——

被光照射带阴影的曲面图[X,Y,Z]=peaks(30);surfl(X,Y,Z)

cylinde(r,n)—三维柱面绘图函数

r为半径;n为柱面圆周等分数例:绘制三维陀螺锥面t1=0:0.1:0.9;t2=1:0.1:2;r=[t1-t2+2];[x,y,z]=cylinder(r,30);surf(x,y,z);grid

为球面等分数,缺省为20例:绘制三维球面[x,y,z]=sphere(30);surf(x,y,z);3.2.6

图形修饰方法图形颜色的修饰matlab有极好的颜色表现功能,其颜色数据又构成了一维新的数据集合,也可称为四维图形colormap(MAP)——

色图设定函数,MAP为m×3维色图矩阵图形颜色可根据需要任意生成,也可用matlab配备的色图函数matlab的色图函数:

hsv——饱和值色图

gray——线性灰度色图

hot——暖色色图

cool——冷色色图

bone——兰色调灰色图

copper——铜色色图

pink——粉红色图

prism——光谱色图

jet——饱和值色图IIflag——红、白、蓝交替色图shadingfaceted—网格修饰,缺省方式shadingflat——

去掉黑色线条,根据小方块的值确定颜色shadinginterp——

颜色整体改变,根据小方块四角的值差补过度点的值确定颜色peaks(30);shadinginterp;colormap(hot)[X,Y,Z]=peaks(30);surfl(X,Y,Z)

shadinginterp;colormap(cool);axisoffpeaks(30);colormap(hot);colorbar('horiz')figure(2);colormap(cool);图形效果修饰透视与消隐——

用于网线图裁剪修饰——用于网线图、曲面图视角修饰——

观察不同角度的三维视图其它修饰:

a.水线修饰

b.等高线修饰透视与消隐p=peaks(30);mesh(p);hiddenonp=peaks(30);mesh(p);hiddenoff裁减修饰p=peaks;p(30:40,20:30)=nan*p(30:40,20:30);surf(p)裁减修饰p=peaks;p(30:40,20:30)=nan*p(30:40,20:30);surf(p)p=peaks;p(30:40,20:30)=nan*p(30:40,20:30);mesh(peaks,p)视角修饰(函数view(az,el))az----方位角;el----俯视角省缺值为:az=-37.5;el=30例:观察不同视角的波峰图形z=peaks(40);subplot(2,2,1);mesh(z);subplot(2,2,2);mesh(z);view(-15,6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论