matlab概述.docx
- 文档编号:23492531
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:35
- 大小:631.68KB
matlab概述.docx
《matlab概述.docx》由会员分享,可在线阅读,更多相关《matlab概述.docx(35页珍藏版)》请在冰豆网上搜索。
matlab概述
MATLAB结课论文
班级
电子142
学号
140404059
姓名
王娟
日期:
2016.10.31
摘要
MATLAB(MATrixLABoratory)是MathWorks公司于1984年开发的科学与工程计算软件。
它以矩阵运算为基础,将高性能的数值计算和符号计算功能、强大的绘图功能、动态系统仿真功能以及为数众多的应用工具箱集成在一起,是颇具特色和影响的科学计算软件,在科学研究以及工程设计领域有着十分广泛的应用。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB由一系列工具组成。
这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。
包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。
随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。
而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。
简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。
使之更利于非计算机专业的科技人员使用。
而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
关键词:
矩阵运算;仿真功能;工具;绘图功能
目录
第1章绪论1
1.1MATLAB的发展概况1
1.2MATLAB的主要功能2
第2章数值计算与多项式计算1
2.1数值计算1
2.2多项式计算3
第3章图形绘制5
3.1二维曲线的绘制5
3.2二维统计分析图的绘制6
3.3三维图形的绘制8
3.3.1三维曲线8
3.3.2三维曲面8
第4章Simulink仿真11
4.1常用仿真模块库介绍11
4.2仿真实例14
4.2.1单相半波可控整流电路(电阻性负载)14
4.2.2单相全波可控整流电路(电阻性负载)16
第5章控制系统中的应用20
5.1系统的时域分析法20
5.2根轨迹21
5.3系统的频域分析法22
5.3.1绘制极坐标图22
5.3.2绘制Bode图23
参考文献24
第1章绪论
1.1MATLAB的发展概况
20世纪70年代后期,时任美国新墨西哥大学计算机科学系主任的CleveMoler教授为减轻学生编程负担,为学生设计了一组调用LINPACK和EISPACK库程序的通俗易用的接口,此即用Fortran编写的萌芽状态的MATLAB。
尽管功能十分简单,但当作免费软件,还是吸引了大批使用者。
经过几年的校际流传,在JohnLittle、CleveMoler、和SteveBangert合作,于1984年成立了MathWorks公司,并正式推出MATLAB第1版(DOS版)。
从这时起,MATLAB的核心采用C语言编写,功能越来越强,除原有的数值计算功能外,还新增了图形处理功能。
MathWorks公司于1992年推出了具有划时代意义的MATLAB4.0版,该版本可以配合Windows一起使用,随之推出的符号计算工具包和用于动态系统建模、仿真、分析的集成环境Simulink,并加强了大规模的数据处理能力,使之应用范围越来越广。
1997年春,MATLAB5.0版问世,该版本支持了更多的数据结构,如单元数据、结构数据、多维数组、对象与类等,使其成为一种更方便,更完善的编程语言。
2000年10月,MATLAB6.0版问世,在操作界面上有了很大的改观,为用户的使用提供了很大方便;在计算性能方面,速度变得更快,数值性能也更好;在图形用户界面设计上也更趋合理;与C语言的接口和转换的兼容性也更强;与之配套的Simulink4.0版的新功能也特别引人注目。
2002年6月又推出了MATLAB6.5版和Simulink5.0版,在计算方法、图形功能、用户界面设计、编程手段、工具等方面都有了重大改进。
2004年7月,MathWorks公司推出了MATLAB7.0版;2005年9月,MathWorks公司推出了MATLAB7.1版。
随后每年发布两次以年份命名的版本。
MATLAB的工具箱,为不同领域内使用MATLAB的研究开发者提供了一条捷径。
当控制界正致力于研究线性矩阵不等式时,当信号处理界正沉浸在回味小波变换之余时,当模糊理论、神经网络发展迅速时,MathWorks公司适应时代发展的需求及时的推出了LMI控制工具箱、小波工具箱、模糊逻辑工具箱、神经网络工具箱等。
MATLAB的工具箱不仅种类繁多而且功能强大,吸引了广大的使用者。
到目前为止,MATLAB的工具箱已有几十种,内容包括:
数学、化学、电力系统、图像处理、信号处理、自动控制等许多领域。
1.2MATLAB的主要功能
MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB产品以提高产品自身的竞争能力。
目前MATLAB产品族可以用来进行数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与方针、数字图像处理、数字信号处理、通讯系统设计与仿真、财务与金融工程。
MATLAB是MATLAB产品家族的基础,它提供了基本的数学算法,例如矩阵运算、数值分析算法,MATLAB集成了2D和3D图形功能,以完成相应数值可视化的工作,并且提供了一种交互式的高级编程语言——M语言,利用M语言可以通过编写脚本或者函数文件实现用户自己的算法。
第2章数值计算与多项式计算
2.1数值计算
1.求最大值和最小值
max(A):
如果A是向量,则返回向量A的最大值。
如果A中包含复数元素,则按模取最大值。
如果A是矩阵,则返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。
[Y,U]=max(A):
如果A是向量,则返回向量A的最大值存入Y,最大值的序号存入U。
如果A中包含复数元素,则按模取最大值。
如果A是矩阵,则Y向量记录A的每列的最大值,U向量记录每列最大值的行号。
max(A,[],dim):
仅用于矩阵。
dim取1或2。
dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。
2.求和与求积
数据序列求和的函数是sum。
sum函数的调用格式如下。
sum(A):
如果A是一个向量,则返回向量各元素的和。
如果A是一个矩阵,则返回一个行向量,其第i个元素是A的第i列的元素和。
sum(A,dim):
当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素之和。
数据序列求积的函数是prod,其用法和sum完全相同。
3.平均值和中值
数据序列的平均值指的是算术平均值。
中值是指在数据序列中其值的大小恰好处在中间的元素。
例如
数据序列 2,5,7,9,12的中值为7
如果数据为偶数个,则中值等于中间的两项之平均值。
例如,数据序列 2,5,6,7,9,12中,处于中间的数是6和7,故其中值为此两数之平均值6.5。
求数据序列平均值的函数是mean,mean函数的调用格式如下。
mean(A):
如果A是一个向量,则返回向量的算术平均值。
如果A是一个矩阵,则返回一个行向量,其第i个元素是A的第i列的算术平均值。
mean(A,dim):
当dim为1时,该函数等同于mean(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的算术平均值。
求数据序列中值的函数是median,其用法和mean完全相同。
4.累加和与累乘积
所谓累加和或累乘积,是指从数据序列的第1元素开始直到当前元素进行累加或累乘,作为结果序列的当前元素值。
在MATLAB中,使用cumsum和cumprod函数求得向量和矩阵元素的累加和与累乘积向量。
cumsum函数的调用格式如下。
cumsum(A):
如果A是一个向量,则返回向量的累加和。
如果A是一个矩阵,则返回一个矩阵,其第i列是A的第i列的累加和向量。
cumsum(A,dim):
当dim为1时,该函数等同于cumsum(A);当dim为2时,返回一个矩阵,其第i行是A的第i行的累加和向量。
求累乘积的函数是cumprod,其用法和cumsum完全相同。
5.标准方差与相关系数
(a).求标准方差
方差描述了一组数据波动的大小,方差越小,数据波动越小。
在MATLAB中,提供了计算数据序列的标准方差的函数std。
对于向量X,std(X)返回一个标准方差。
对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A各列或各行的标准方差。
std函数的一般调用格式为
Y=std(A,flag,dim)
其中flag取0或1,当flag=0时,按σ1所列公式计算标准方差;当flag=1时,按σ2所列公式计算标准方差。
dim取1或2,当dim=1时,求各列元素的标准方差;当dim=2时,则求各行元素的标准方差。
默认flag=0,dim=1。
(b).相关系数
相关系数用来衡量两组数据之间的线性相关程度。
corrcoef函数用于求数据的相关系数矩阵。
corrcoef(X,Y):
求向量X和Y的相关系数。
corrcoef(X):
返回从矩阵X形成的一个相关系数矩阵。
它把矩阵X的每列作为一个变量,然后求它们的相关系数。
6.排序
MATLAB提供了对向量X进行排序的函数sort(X),函数返回一个对X中的元素按升序排列的新向量。
sort函数也可以对矩阵A的各列或各行重新排序,其调用格式为
[Y,I]=sort(A,dim,mode)
其中Y是排序后的矩阵,而I记录Y中的元素在A中的位置。
dim指明对A的列还是行进行排序,若dim=1,则按列排;若dim=2,则按行排。
mode指明按升序还是降序排序,'ascend'为升序,'descend'为降序。
dim默认取1,mode默认取'ascend'。
2.2多项式计算
(1).多项式的加减运算
在MATLAB中,多项式的加减运算就是其所对应的系数向量的加减运算。
如果多项式的次数不同,则应该把低次的多项式系数不足的高次项用0补足,使同式中的各多项式具有相同的次数。
例如,计算(x32x2+5x+3)+(6x1),命令如下:
a=[1,-2,5,3];
b=[0,0,6,-1];
c=a+b
c=
1-2112
(2).多项式乘除运算
函数conv(P1,P2)用于求多项式的乘积,其中P1、P2是两个多项式的系数向量。
函数[Q,r]=deconv(P1,P2)用于对多项式作除法运算,其中P1、P2是两个多项式的系数向量,返回值Q是商式的系数向量,r是余式的系数向量。
(3).多项式的导函数
对多项式求导数的函数如下。
p=polyder(P):
求多项式P的导函数
p=polyder(P,Q):
求P·Q的导函数
[p,q]=polyder(P,Q):
求P/Q的导函数,导函数的分子存入p,分母存入q。
上述函数中,参数P、Q是多项式的系数向量,结果p、q也是多项式的系数向量。
(4).多项式的求值
MATLAB提供了两种求多项式值的函数:
polyval与polyvalm,它们的输入参数均为多项式系数向量P和自变量x。
两者的区别在于前者是代数多项式求值,而后者是矩阵多项式求值。
(a).代数多项式求值
polyval函数用来求代数多项式的值,其调用格式为
Y=polyval(P,x)
若x为一数值,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求其多项式的值。
(b).矩阵多项式求值
polyvalm函数用来求矩阵多项式的值,其调用格式与polyval相同,但含义不同。
polyvalm函数要求x为方阵,它以方阵为自变量求多项式的值。
设A为方阵,P代表多项式
,那么polyvalm(P,A)的含义为
A*A*A5*A*A+8*eye(size(A))
而polyval(P,A)的含义为
A.*A.*A5*A.*A+8*ones(size(A))
(5).多项式求根
roots函数用于求多项式的全部根,其调用格式为
x=roots(P)
其中P为多项式的系数向量,求得的根赋给向量x,即x
(1),
(2),…,x(n)分别代表多项式的n个根。
若已知多项式的全部根,则可以用poly函数建立起该多项式,其调用格式为
P=poly(x)
其中x为具有n个元素的向量。
poly(x)建立以x为其根的多项式,且将该多项式的系数赋给向量P。
第3章图形绘制
3.1二维曲线的绘制
+
二维曲线是将平面上坐标上的数据点连接起来的平面图形。
除直角坐标系外,还可采用对数坐标、极坐标。
数据点可以用向量或矩阵形式给出,类型可以是实型或复型。
二维曲线的绘制是其他绘图操作的基础。
(1)plot函数
plot(x,y)
其中x和y为大小相同的向量,分别用于存储x坐标和y坐标数据。
(a)当x和y是同维矩阵时,配对的x、y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。
例如,在同一坐标中绘制3条幅值不同的正弦曲线,命令为
x=0:
pi/10:
2*pi;
y=sin(x);
plot([x;x;x]',[y;y*2;y*3]')
当x是向量,y是有一维与x同维的矩阵时,则绘制出多根曲线,曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。
例如,在同一坐标中绘制3条幅值不同的正弦曲线,命令也可以写成:
x=0:
pi/10:
2*pi;
y=sin(x);
plot(x,[y;y*2;y*3])
(b)当plot函数只有一个输入参数时,即
plot(y)
若y是实型向量,则以该向量元素的下标为横坐标、元素值为纵坐标画出一条连续曲线;若y是复数向量,则分别以向量元素实部和虚部为横、纵坐标绘制一条曲线。
若y是实矩阵,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数;若y是复数矩阵,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。
(c)当plot函数有多个输入参数,且都为向量时,即
plot(x1,y1,x2,y2,…,xn,yn)
其中,x1和y1,x2和y2,……,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。
每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。
例如,在同一坐标中绘制3条幅值不同的正弦曲线,命令也可以写成:
x=0:
pi/10:
2*pi;
y=sin(x);
plot(x,y,x,y*2,x,y*3)
【例3.1】绘制曲线及其包络线。
程序如下:
t=(0:
pi/100:
pi)';
y1=sin(t)*[1,-1];%包络线函数值
y2=sin(t).*sin(9*t);
plot(t,[y1,y2]')
gridon;%加网格线
boxon;%加坐标边框
axisequal%坐标轴采用等刻度
(2).具有两个纵坐标标度的图形
绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。
这种图形有利于图形数据的对比分析。
plotyy(x1,y1,x2,y2)
其中,x1和y1对应一条曲线,x2和y2对应另一条曲线。
横坐标的标度相同,纵坐标有两个,左纵坐标用于x1、y1数据对,右纵坐标用于x2、y2数据对。
3.2二维统计分析图的绘制
(1)条形图。
MATLAB中提供了多个函数可绘制各种条形图,bar函数绘制柱形图,barh函数绘制水平条形图,stem函数绘制杆图,errorbar函数绘制误差条图。
下面以bar函数为例,说明条形图函数的用法。
bar函数的基本用法与plot函数相似,其调用格式为
bar(x,width,style):
当x是m × n阶的矩阵时,绘制的条形图以分组或堆积的形式表现。
矩阵中每一行元素绘制在一组中,每一列元素绘制在每组中相对应的位置上。
其中,width设置条形的相对宽度和控制在一组内条形的间距,默认值为0.8,style指定条形的排列模式,类型有'group'(分组)和'stack'(堆积),默认时采用'group'模式。
(2)饼图。
饼图能反映每一数值相对于总数值的大小。
MATLAB中绘制饼图的函数是pie,其调用格式为
pie(x,explode)
pie函数使用x中的数据绘制一个饼图,x可以是向量或矩阵。
explode是与x同等大小的向量或矩阵,与explode的非零值对应的部分将从饼图中心分离出来。
默认explode时,饼图是一个整体。
【例3.2】表3.1所示为某公司3类产品个季度的销售额(万元),分别按季度绘制簇状形图和堆积条形图。
用饼图分析例3.10中产品A该年度各季度的产品销售情况。
表3.1产品全年销售额(单位:
万元)
x=[51,82,34,47;67,78,68,90;78,85,65,50]';
subplot(1,2,1);
bar(x,'group');
title('Group');axis([050100]);
subplot(1,2,2);
barh(x,'stack');
title('Stack');
pie(x(:
1),[0001])
title('饼图');
legend('一季度','二季度','三季度','四季度');
(3)散点图。
散点图是数据点在直角坐标系平面上的分布图。
MATLAB中绘制散点图的函数是scatter,其调用格式为
scatter(x,y,s,c,'filled')
其中,x、y、s和c为同等大小的向量。
x和y用于定位数据点;s指定绘图点的大小,s也可以是一个标量,则所有数据点同等大小;c指定绘图所使用的色彩,c也可以是一个标量,所有数据点使用同一种颜色;'filled'表示填充绘图点,默认时,数据点是空心的。
3.3三维图形的绘制
第1章
第2章
第3章
3.1
3.2
3.3
3.3.1三维曲线
最基本的三维图形函数为plot3,其调用格式为
plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)
其中,每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。
当x、y、z是同维向量时,则x、y、z对应元素构成一条三维曲线;当x、y、z是同维矩阵时,则以x、y、z对应列元素绘制三维曲线,曲线条数等于矩阵列数。
【例3.3】绘制三维曲线。
程序如下:
t=0:
pi/10:
10*pi;
x=sin(t)+t.*cos(t);
y=cos(t)-t.*sin(t);
z=t;
plot3(x,y,z);
axis([-3030-3030035])
title('Linein3-DSpace');
xlabel('X');ylabel('Y');zlabel('Z');
gridon;
3.3.2三维曲面
MATLAB中绘制三维网格图和曲面图,先要生成在x−y平面的网格数据,再以一组z轴的数据对应到这个二维的网格,然后调用绘图函数绘制。
(1).产生三维数据
在MATLAB中产生三维图形数据的方法是:
将x方向区间[a,b]分成m份,将y方向区间[c,d]分成n份,由各划分点分别作平行于两坐标轴的直线,将区域[a,b]×[c,d]分成m×n个小矩形,生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后求对应网格坐标的Z矩阵。
MATLAB中的meshgrid函数可以将向量转换为矩阵。
meshgrid函数的调用格式为
[X,Y]=meshgrid(x,y);
其中x、y为向量。
(2).绘制三维曲面的函数
MATLAB提供了mesh函数和surf函数来绘制三维曲面图。
mesh函数用于绘制三维网格图;surf用于绘制三维曲面图,各线条之间的补面用颜色填充。
surf函数和mesh函数的调用格式为
mesh(x,y,z,c)
surf(x,y,z,c)
一般情况下,x、y、z是维数相同的矩阵。
x、y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。
c默认时,MATLAB认为c = z,即颜色的设定是正比于图形的高度的,这样就可以画出层次分明的三维图形。
当x,y是向量时,要求x的长度等于z矩阵的列,y的长度等于z矩阵的行,x、y向量元素的组合构成网格点的x、y坐标,z坐标则取自z矩阵,然后绘制三维曲面图。
【例3.4】绘制三维曲面图z = sinx2 + cosy2,x[0,],y[0,/2]。
程序如下:
[x,y]=meshgrid(0:
pi/100:
pi,0:
pi/100:
pi/2);
z=sin(x.^2)+cos(y.^2);
mesh(x,y,z);
axis([0401.8-1.51.5]);
(3).标准三维曲面
(a)sphere函数。
sphere函数用于绘制三维球面,其调用格式为
[x,y,z]=sphere(n)
该函数将产生(n + 1)×(n + 1)矩阵x、y、z,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。
若在调用该函数时不带输出参数,则直接绘制所需球面。
n决定了球面的圆滑程度,其默认值为20。
若n值取得较小,则将绘制出多面体表面图。
(b)cylinder函数。
cylinder函数用于绘制柱面,其调用格式为
[x,y,z]=cylinder(R,n)
其中,R是一个向量,存放柱面各个等间隔高度上的半径;n表示在圆柱圆周上有n个间隔点,默认时表示有20个间隔点。
例如,cylinder(3)生成一个圆柱,cylinder([10,1])生成一个圆锥,而
t=0:
pi/100:
4*pi;
R=sin(t);
cylinder(R,30)
生成一个正弦型柱面。
(c)peaks函数。
peaks函数(多峰函数)常用于三维曲面的演示。
该函数可以用来生成绘图数据矩阵,例如:
z=peaks(30);
将生成一个30 × 30的矩阵z,即分别沿x和y方向将区间[−3,3]等分成29份,并计算这些网格点上的函数值。
默认参数时将生成一个49 × 49的矩阵。
也可以根据网格坐标矩阵x、y重新计算函数值矩阵。
例如:
[x,y]=meshgrid(-5:
0.1:
5);
z=pea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 概述