当前位置:文档之家› MATLAB讲义

MATLAB讲义

MATLAB讲义

董波

大连理工大学数学科学学院dongbodlut@https://www.doczj.com/doc/0f13920054.html,

第一章MATLAB简单介绍

基本内容:

?MATLAB入门

?常用数学运算与操作:

–线性代数和矩阵分析与变换

–数据处理与基本统计

–快速傅里叶变换(FFT),相关与协方差分析

–稀疏矩阵运算

–三角及其它初等函数

–Bessel、beta及其它特殊函数

–线性方程及微分方程求解

–多维数组的支持

–专业应用工具箱:MATLAB的工具箱加强了对工程及科学中特殊应用的支持。工具箱也和MATLAB一样是完全工程师化的,可扩展性强。将某个或某几个工具箱与MATLAB联合使用,可以得到一个功能强大的计

算组合包,满足工程师的特殊要求。于是,MATLAB产品被广泛应用于下列领域:测量测试、数学建模与分

析、信号处理、财经金融建模与分析、图像处理与地理信息。

?矩阵操作、运算

?数据可视化

–二维、三维绘图,包括离散数据绘图、直线图、封闭折线图(polygon)、网格图、等值线图、极坐标图、直方图等丰富多样的数据可视化手段;

–交互的文本注释编辑能力;

–提供文件I/O,用于显示绘制图形,支持多种图像文件格式例如:EPS,TIFF,JPEG,PNG,BMP,HDF,AVI,PCX等;

–软硬件支持的OpenGL渲染;

–支持动画和声音;

–多种光源设置、照相机和透视控制;

–对图形界面元素提供了交互式可编程的控制方法??句柄图形;

–能够打印或者导出数据图形文件到其它的应用程序中,例如Word和PowerPoint,共享开发的结果。

?符号计算

?GUIDE用户界面界面设计

?Simulink建模与仿真

?MATLAB与C及C++程序接口

?文件输入与输出

III

MATLAB作为一种高级科学计算软件,是进行算法开发、数据可视化、数据分析以及数值计算的交互式应用开发环境。世界上许许多多的科研工作者都在使用MATLAB产品来加快他们的科研进程,缩短数据分析和算法开发的时间,研发出更加先进的产品和技术。相对于传统的C、C++或者FORTRAN语言,MATLAB提供了高效快速解决各种科学计算问题的方法。

MATLAB特点:

?易于学习、使用方便

?支持多种操作系统

?丰富的内部函数

?强大的图形和符号功能

?可以自动选择算法

?与其他软件和语言有良好的对接性

MATLAB用途:

?科学计算。目前,MATLAB产品已经被广泛认可为科学计算领域内的标准软件工具之一。

例1:求随机矩阵的行列式、逆、特征值

A=rand(4);

det(A)

inv(A)

eig(A)

例2:求解代数方程

p1=[1-32];

p2=[132];

p3=conv(p1,p2);

roots(p3)

例3:优化问题求解:min

Ax

0≤x≤1

x0=[1;1;1;1];

[x,fval]=fminimax(@funx,x0,[],[],[],[],0,1)

function f=funx(x)

A=rand(4);f=A*x;

?可视化。包括离散数据绘图、直线图、封闭折线图、网格图、等值线图、极坐标图、直方图等丰富多样的数据可视化手段。

例1、x=linspace(0,2*pi);

y=sin(x);

z=cos(x);

plot(x,y,’go’,x,z,’r-’);

例2、y=peaks;

plot(y)

例3、t=linspace(0,50*pi,501);

plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t);

例4、[x,y,z]=peaks;

meshz(x,y,z);

meshc(x,y,z);

?GUIDE用户界面设计

已写的程序

?Simulink建模与仿真

?与其他编程语言结合开发应用程序:测量测试、数学建模与分析、信号处理、财经金融建模与分析、图像处理与地理信息

第二章基本使用方法

?在>>后直接输入表达式即可计算。

?基本的数学函数:对标量、向量的不同操作符:四则运算(*,.*)、取整运算(?oor,round,ceil,rem)、幂运算(sqrt)、三角函数(sin,asin)、对数函数(log,log10)、指数函数(exp,pow2)、复数运算(real,imag,conj,abs,angle)。

?基本操作:共轭转置(’)、转置(.’)、左除(\)

?标点符号:”:”不将结果显示;”%”注释;”.”结构成员操作;”:”数组中应用

?清屏命令:clc,clear,clear all

?数据类型:默认的数据类型为double型,利用class查看数据类型。单精度和双精度数据类型的取值范围realmin(’single’), realmax(’single’),realmin(’double’),realmax(’double’)

?逻辑数组的应用:A=rand(4);A(A>0.5)=1;A(A<=0.5)=0;

?MATLAB预定义的变量:ans,eps(浮点数的精度,MATLAB中的最小数),pi,inf,nan(NaN),i(j),nargin,nargout

?逻辑运算符:&,&&,|,||,

?集合函数:intersect(两集合的交),ismember(集合的数组成员),setdi?(向量的集合差),union(两个向量的并),unique(删除集合中的重复元素)

?时间函数:cputime;tic,toc

VII

第三章矩阵操作

数组的创建:

?一维数组的创建:

–直接赋值

–等差数组:linspace

–等比数组:logspace

?二维数组的创建:直接赋值

?特殊数组:单位数组(eye),全为1的数组(ones),均匀分布的随机数组(rand),正态分布的随机数组(randn),0数组(zeros)

数组的元素操作、查找、排序

?数组元素的访问

–单个元素

–多个元素

–一块元素

?数组查找:?nd,返回值一个或两个,注意数组先按列排

?数组排序:sort,一维数组两个参数descend和ascend,二维数组两个参数1,2

§3.1基本操作

基本操作:

?在>>后直接输入表达式即可计算。

?基本的数学函数:对标量、向量的不同操作符:四则运算(*,.*)、取整运算(?oor,round,ceil,rem)、幂运算(sqrt)、三角函数(sin,asin)、对数函数(log,log10)、指数函数(exp,pow2)、复数运算(real,imag,conj,abs,angle)。

?基本操作:共轭转置(’)、转置(.’)、左除(\)

?标点符号:”:”不将结果显示;”%”注释;”.”结构成员操作;”:”数组中应用

?清屏命令:clc,clear,clear all

?数据类型:默认的数据类型为double型,利用class查看数据类型。单精度和双精度数据类型的取值范围realmin(’single’), realmax(’single’),realmin(’double’),realmax(’double’)

?逻辑数组的应用:A=rand(4);A(A>0.5)=1;A(A<=0.5)=0;

?MATLAB预定义的变量:ans,eps(浮点数的精度,MATLAB中的最小数),pi,inf,nan(NaN),i(j),nargin,nargout

?逻辑运算符:&,&&,|,||,

?集合函数:intersect(两集合的交),ismember(集合的数组成员),setdi?(向量的集合差),union(两个向量的并),unique(删除集合中的重复元素)

?时间函数:cputime;tic,toc

IX

§3.2矩阵操作

数组的创建:

?一维数组的创建:

–直接赋值

–等差数组:linspace

–等比数组:logspace

?二维数组的创建:直接赋值

?特殊数组:单位数组(eye),全为1的数组(ones),均匀分布的随机数组(rand),正态分布的随机数组(randn),0数组(zeros)

数组的元素操作、查找、排序

?数组元素的访问

–单个元素:A=rand(7),A(2,2),A(9)

–多个元素:A=rand(7),A([1,3,8])没有规律的选取矩阵元素时,应将矩阵看做向量进行处理。

–一块元素:A=rand(7),A(2:6,3:5),A([1,3,5],[2,6])

?数组查找:?nd,返回值一个或两个,注意数组先按列排

?数组排序:sort,一维数组两个参数descend和ascend,二维数组两个参数1,2

数组的基本操作:

?四则运算

–.*,./,.\

–*,/,\

?乘方运算:A∧2,A.∧2,A.∧A,2.∧A

?关系运算:与数组、数的大小比较

?数组扩展:cat,vertcat,horzcat,

cat(1,A,B)=vertcat(A,B),

cat(2,A,B)=horzcat(A,B)

?数组元素的删除:A(:,1)=[];

数组的保存和加载:

?数组的保存:

save,...,

?数组的加载

load,...,

例:X=?oor(2*rand(4,3))*?oor(3*rand(3,4));

Y=rand(4);

save?le=’data.mat’;

save(save?le,’X’);

s=load(’data.mat’);

X=s.X;

矩阵代数操作:

?特殊矩阵的生成:对称矩阵、反对称矩阵、对称正定矩阵、零矩阵、对角阵、三对角阵、魔术矩阵

?矩阵的操作:逆、行列式、秩、规模、条件数、LU分解、Cholesky分解、QR分解、特征值、特征向量、奇异值分解、维数改变

?线性方程组的求解

多维数组的创建:

?直接生成:A(3,3,4),A(:,:,1)=rand(3,3)

?索引生成:A=rand(3,3),A(:,:,2)=rand(3,3);

?利用cat函数生成

A=cat(3,[11;11],[22;22])

B=cat(3,[33;33],[44;44])

C=cat(4,A,B,cat(3,[55;55],[66;66]))

节省内存空间、节省计算量

?稀疏矩阵的创建:sparse(A),sparse(m,n),sparse(i,j,s),sparse(i,j,s,m,n),sparse(i,j,s,m,n,nonzero)

?稀疏矩阵的操作:nnz,nonzeros,issparse,spy

?单元矩阵的创建:三种方式

A(1,1)={’Cell’},A(1,2)={{’Cell1’,’Cell2’}}

A{1,1}=’Cell’;A{1,2}={’Cell1’,’Cell2’};

A={’Cell’,{’Cell1’,’Cell2’}}

?单元矩阵的操作:cellplot,celldisp,元素的取法,数值数组转化为单元数组:num2cell(A),num2cell(A,1),num2cell(A,

2),iscell()

§3.2.1练习

1、生成一个4×4的随机矩阵A,其元素为[-3,3]间的一个随机数。

2、计算A的特征值和特征向量,要求特征向量的最后一个元素为1。

3、将A的所有小于0的元素替换为0。

4、构造一个100阶的稀疏矩阵A,要求非零元素个数为50个,并且非零元素为1到50。

5、对于给定的稀疏矩阵A,令B=sparse(A),C=A,比较求矩阵B,C特征值的计算时间。

6、对于稀疏线性方程组

41

14

..

.

..

.

..

.

14

n×n

x1

x2

..

.

x n

=

1

1

..

.

1

比较利用sparse和full的计算时间。

7、建立如下单元数组:

学号姓名平时成绩期末成绩最终成绩

10101001Matthew2080

10101002Moody1888

10101003Paul1980

10101004Kobe2090

(1)、按照平时成绩×1+期末成绩×0.8的方式计算出最终成绩,得到一个新的单元数组

(2)、按照姓名排序,得到新的单元数组

(2)、按照期末成绩排序,如果成绩相同,按照学号排序,得到新的单元数组

第四章MATLAB的数学运算

§4.1基本数学运算

数学运算是MATLAB的最早功能,随着MATLAB进一步发展,其功能越来越强大,但是数学运算仍然是MATLAB的核心。本部分主要讲解MATLAB的一些基本函数运算:求根、积分、微分

fzero用于求单变元函数的根,基本命令为fzero(fun,x0),若x0为一个数,则返回的是函数fun在x0附近的零点,若x0为一个区间,则返回的是函数fun在区间内的零点,要求区间两个端点必须具有相反的符号,否则报错。

例:>>z=fzero(@(x)x.∧3-2*x-5,2)

>>z=fzero(@fun,x0),其中fun为子文件中自定义的一个函数

fzero和plot函数结合起来使用,可以方便的求解一个单变元函数的零点。

例:x=-pi:0.01:pi;plot(x,x+sin(x)-1);fzero(@(x)x+sin(x)-1,0.5);

求一个或多个函数关于某个或多个变元的导数的命令有di?,jacobian

?di?:对矩阵或函数操作

?jacobian求函数的Jacobian

求函数关于某个或多个变元的积分的命令int,quad,quadgk,quadl,dblquad

§4.2多项式

本章主要讲解多项式在MATLAB中的基本运算,包括多项式的具体表示、四则运算、函数值、求根、微积分多项式的一般形式为

a n x n+a n?1x n?1+...+a1x+a0

利用MATLAB表示为向量:[a n a n?1...a1a0]。

多项式的四则运算+,-,conv,deconv

计算多项式在某点或多个点的函数值polyval

计算多项式在某个矩阵处的函数值polyvalm

计算多项式的微分polyder

计算多项式的零点roots

§4.3常微分方程的数值解法

常用的命令ode45、ode23或ode113

ODE指令的格式如下:

[t,y]=solver(′odefile′,[t0,t1],y0);

其中’ode?le’为要求解的常微分方程,[t0,t1]为时间区间,y0为初始状态,solver是指令,t为时间向量,y为对应时刻的状态。

例1、考虑求解常微分方程:

y′′?(1?y2)y′+y=0

令y1=y,y2=y′,将上式转化为低阶微分方程组:

{

y′1=y2;

y′2=(1?y21)y2?y1

XIII

MATLAB 代码如下:t =[0,5];y =[3,3]’;

[t,y ]=ode45(@fun,t,y);plot(t,y(:,1),’go’,t,y(:,2),’r*’);function dy =fun(t,y)

dy =[y(2);(1-y(1)∧2)*y(2)+y(1)];

注意:dy 要求必须是列向量的形式。

§4.4

练习

1、计算下列积分:

(1)、∫1

?1x +x 3+x 5dx

(2)、∫101x x 4+4dx

(3)、∫101∫101sin y x +y x 2

+4

dxdy (4)、∫101∫y 1y x +y 4

dxdy (5)、∫30∫101∫y 1y x +y

4

dxdydz 2、计算下列函数的解(1)、y =e x ?x 5(2)、y =x sin x ?53、多形式基本运算:

(1)、利用roots 命令求x 3+2x 2+x +1=0的根

(2)、令v =[x 2,x,1],且x 3+2x 2+x +1=0,求一个矩阵A ,使得A ?v =x ?v ,并且求出A 的特征值。观察A 的特征

值与x 3+2x 2+x +1=0的根的关系。4、计算下列函数的微分:

(1)、y =√x +√

x

(2)、y =ln 1√x +√

x 2+1

(3)、y =tan(a x )+arctan(x a ),a >05、求解微分方程(1)、y ′′

?6y ′

+25y =0(2)、y (5)+2y

′′′

+y ′

=0

(3)、y ′′

?2y =2xe x (cos x ?sin x )

第五章MATLAB作图

在MATLAB下,每一个图形窗口有唯一的一个序号h,称为该图形窗口的句柄.MATLAB通过管理图形窗口的句柄来管理图形窗口;当前窗口句柄可以由MATLAB函数gcf获得;可以在图形窗口中设置图形对象的参数.具体方法是在图形窗口的Edit菜单中选择Properties项,打开图形对象的参数设置窗口,可以设置对象的属性.

一个图形必须有其定位系统,即坐标系;每个坐标系都有唯一的标识符,即句柄值;当前坐标系句柄可以由MATLAB函数gca获得;使某个句柄标识的坐标系成为当前坐标系,可用如下函数:axes(h)h为指定坐标系句柄值.一些有关坐标轴的函数:

?定义坐标范围:一般MATLAB自动定义坐标范围,如用户认为设定的不合适,可用:axis([Xmin,Xmax,Ymin,Ymax])来重新设定;

?坐标轴控制:MATLAB的缺省方式是在绘图时,将所在的坐标系也画出来,为隐去坐标系,可用axis o?;axis on则显示坐标轴(缺省值).

?通常MATLAB的坐标系是长方形,长宽比例大约是4:3,为了得到一个正方形的坐标系可用:axis square

?坐标系横纵轴的比例是自动设置的,比例可能不一样,要得到相同比例的坐标系,可用:axis equal

?grid on打开网格

?hold on在同一个图形界面中画下一个图

§5.1MATLAB图形界面

§5.1.1图形界面的创建

§5.2MATLAB绘图

§5.2.1二维图形的绘制

plot函数的基本用法:

?plot(y)-绘制向量y对应于其元素序数的二维曲线图,如果y为复数向量,则绘制虚部对于实部的二维曲线图,如果y为实数矩阵,则绘制y的各列

例:绘制单矢量曲线图.

y=[00.62.358.311.71517.719.420];plot(y);

y=[1+i2+2i3+3i4+4i];plot(y);

y=[123;234;345];plot(y);

?plot(x,y)-绘制由x,y所确定的曲线.

–x,y是两组向量,且它们的长度相等,则plot(x,y)可以直观地绘出以x为横坐标,y为纵坐标的图形.

如:画正弦曲线:

t=0:0.1:2*pi;y=sin(t);plot(t,y)

–当plot(x,y)中,x是向量,y是矩阵时,则绘制y矩阵中各行或列对应于向量x的曲线.如果y阵中行的长度与x向量的长度相同,则以y的行数据作为一组绘图数据;如果y阵中列的长度与x向量的长度相同,则以y的列数据作为一组绘图数据;如果y阵中行,列均与x向量的长度相同,则以y的每列数据作为一组绘图数据.

例:下面的程序可同时绘出三条曲线.MATLAB在绘制多条曲线时,会

XV

按照一定的规律自动变化每条曲线的的颜色.

x=0:pi/50:2*pi;

y(1,:)=sin(x);

y(2,:)=0.6*sin(x);

y(3,:)=0.3*sin(x);

plot(x,y)

或者还可以这样用:

x=0:pi/50:2*pi;

y=[sin(x);0.6*sin(x);0.3*sin(x)];

plot(x,y)

–如果x,y是同样大小的矩阵,则plot(x,y)绘出y中各列相应于x中各列的图形.

例:x(1,:)=0:pi/50:2*pi;

x(2,:)=pi/4:pi/50:2*pi+pi/4;

x(3,:)=pi/2:pi/50:2*pi+pi/2;

y(1,:)=sin(x(1,:));

y(2,:)=0.6*sin(x(2,:));

y(3,:)=0.3*sin(x(3,:));

plot(x,y)

–plot(X1,Y1,LineSpec,...)

MATLAB可以设置所绘图形的各种属性:颜色、线型、标记点。这些选项可以连在一起用,将曲线以不同的颜色,不同的线型及标记点表示出来。

?各种颜色属性:’r’、红色、’m’粉红、’g’绿色、’c’青色、’b’兰色、’w’白色、’y’黄色、’k’黑色

?各种线型属性:’-’实线、’--’虚线、’:’点线、’-.’点划线

?各种标记点属性:’.’用点号绘制各数据点、’∧’用上三角绘制各数据点、’+’用’+’号绘制各数据点’v’用下三角绘制各数据点、’*’用’*’号绘制各数据点、’>’用右三角绘制各数据点、’.’用’.’号绘

制各数据点、’<’用左三角绘制各数据点、’s’或squar用正方形绘制各数据点’p’、用五角星绘制各数据

点、’d’或diamond用菱形绘制各数据点、’h’用六角星绘制各数据点

–plot(...,’PropertyName’,PropertyValue,...)

还可以进一步设置包括线的宽度(LineWidth),标记点的边缘颜色(MarkerEdgeColor),填充颜色(MarkerFaceColor)及标记点的大小(MarkerSize)等其它绘图属性.

例:设置绘图线的线型,颜色,宽度,标记点的颜色及大小.

t=0:pi/20:pi;

y=sin(4*t).*sin(t)/2;

plot(t,y,’-bs’,’LineWidth’,2,...%设置线的宽度为2

’MarkerEdgeColor’,’k’,...%设置标记点边缘颜色为黑色

’MarkerFaceColor’,’y’,...%设置标记点填充颜色为黄色

’MarkerSize’,10)%设置标记点的尺寸为10

?对於变化剧烈的函数,可用fplot来进行较精确的绘图,会对剧烈变化处进行较密集的取样。

?ezplot是英文easy plot的简称,与plot类似,但是更加简单。

ezplot(fun)

ezplot(fun,[min,max])

ezplot(fun2)

ezplot(fun2,[xmin,xmax,ymin,ymax])

ezplot(fun2,[min,max])

ezplot(funx,funy)

ezplot(funx,funy,[tmin,tmax])

例:ezplot(’x∧2+1’);一般函数作图

ezplot(’sin(3*t)*cos(t)’,’sin(3*t)*sin(t)’)参数函数作图

ezplot(’x∧3+2*x∧2-3*x+5-y∧2’)隐函数作图

?对数坐标图绘制函数:

在对数坐标图的绘制中,有三种绘图函数:semilogx,semilogy和loglog函数.

1)semilogx()——绘制以X轴为对数坐标轴的对数坐标图.

其调用格式为:semilogx(x,y,’属性选项’)

其中属性选项同plot函数.

该函数只对横坐标进行对数变换,纵坐标仍为线性坐标.

2)semilogy()——绘制以Y轴为对数坐标轴的对数坐标图.

其调用格式为:semilogy(x,y,’属性选项’)

该函数只对纵坐标进行对数变换,横坐标仍为线性坐标.

3)loglog()——绘制X,Y轴均为对数坐标轴的图形.

其调用格式为:loglog(x,y,’属性选项’)

该函数分别对横,纵坐标都进行对数变换.

例:x=0:0.1:6*pi;

y=cos(x/3)+1/9;

subplot(221),semilogx(x,y);

subplot(222),semilogy(x,y);

subplot(223),loglog(x,y);

?极坐标图的绘制函数:

绘极坐标图可用polar()函数.其调用格式如下:

polar(theta,rho,’属性选项’)——theta:角度向量,rho:幅值向量,属性内容与plot函数基本一致.

例如:theta=0:0.1:8*pi;

p=cos((5*theta)/4)+1/3;

polar(theta,p)

?双Y轴绘图:plotyy()函数.

其调用格式为:plotyy(x1,y1,x2,y2)——绘制由x1,y1和x2,y2确定的两组曲线,其中x1,y1的坐标轴在图形窗口的左侧,x2,y2的坐标轴在图形窗口的右侧.

Plotyy(x1,y1,x2,y2,’function1’,’function2’)——功能同上,function是指那些绘图函数如:plot,semilogx,loglog等.

例如:在一个图形窗口中绘制双Y轴曲线.

x=0:0.3:12;

y=exp(-0.3*x).*sin(x)+0.5;

plotyy(x,y,x,y,’plot’,’stem’)

stem:绘制stem形式的曲线(上端带圈的竖线).

绘图结果:两条图线自动用不同的颜色区分,两个坐标的颜色与图线的颜色相对应,左边的Y轴坐标对应的是plot形式的曲线,右边的Y坐标对应的是stem形式的曲线.

?绘制多个子图:subplot()函数

MATLAB允许在一个图形窗口上绘制多个子图(如对于多变量系统的输出),允许将窗口分成nxm个部分.

分割图形窗口用subplot函数来实现,其调用格式为:

subplot(n,m,k)或subplot(nmk)——n,m分别表示将窗口分割的行数和列数,k表示要画图部分的代号,表示第几个图形,nmk三个数可以连写,中间不用符号分开.

例如:将窗口划分成2×2=4个部分,可以这样写:

subplot(2,2,1),

subplot(2,2,2),

subplot(2,2,3),

subplot(2,2,4),

注:subplot函数没有画图功能,只是将窗口分割.

§5.3三维图形的绘制

?plot3绘制三维曲线,基本调用格式如下:

plot3(X1,Y1,Z1,...)

plot3(X1,Y1,Z1,LineSpec,...)

plot3(...,’PropertyName’,PropertyValue,...)

?ezplot3绘制三维曲线,基本调用格式如下:

ezplot3(funx,funy,funz)

ezplot3(funx,funy,funz,[tmin,tmax])

?meshgrid将指定的区域转化为数组

?mesh绘制三维网格图

?meshz在图形周围绘制相关曲线

?surf绘制三维表面图

?meshc绘制带有等值线的三维网格图

?surfc绘制带有等值线的三维表面图

§5.4特殊图形的绘制

?条形图和面积图:

–bar和barh

当资料点数量不多时,长条图是很适合的表示方式。函数bar和barh用于绘制二维柱状图,分别绘制纵向和横向图形。在默认情况下,bar函数绘制的条形图将矩阵中的每个元素表示为“条形”,横坐标上的位置表示不同行,“条形”的高度表示元素的大小。在图形中,每一行的元素会集中在一起。

bar函数的调用格式为:bar(Y),对Y绘制条形图。如果Y为矩阵,Y的每一行聚集在一起。横坐标表示矩阵的行数,纵坐标表示矩阵元素值的大小。bar(x,Y),指定绘图的横坐标。x的元素可以非单调,但是x 中不能包含相同的值。bar(...,width),指定每个条形的相对宽度。条形的默认宽度为0.8

bar(...,’style’),指定条形的样式。style的取值为“grouped”或者“stacked”,如果不指定,则默认为“grouped”。两个取值的意义分别为:grouped:绘制的图形共有m组,其中m为矩阵Y的行数,没一组有n 个条形,n为矩阵Y的列数,Y的每个元素对应一个条形;stacked:绘制的图形有m个条形,每个条形为第m行的n个元素的和,每个条形由多个(n个)色彩构成,每个色彩对应相应的元素。bar(...,’bar color’):指定绘图的色彩,所有条形的色彩由“bar color”确定,“bar color”的取值与plot绘图的色彩相同。

–bar3和bar3h

用于绘制三维柱状图,分别绘制纵向图形和横向图形。这两个函数的用法相同,并且与函数bar和barh 的用法类似,读者可以和bar函数和barh函数进行比较学习。bar3函数的调用格式为:bar3(Y),绘制三维条形图,Y的每个元素对应一个条形,如果Y为向量,则x轴的范围为[1:length(Y)],如果Y为矩阵,则x轴的范围为[1:size(Y,2)],即为矩阵Y的列数,图形中,矩阵每一行的元素聚集在相对集中的位置;bar3(x,Y),指定绘制图形的行坐标,规则与bar函数相同;

bar3(...,width),指定条形的相对宽度,规则与bar函数相同;bar3(...,’style’),指定图形的类型,“style”

的取值可以为“detached”、“grouped”或“stacked”,其意义分别为:detached,显示Y的每个元素,在x方向上,Y的每一行为一个相对集中的块;grouped,显示m组图形,每组图形包含n个条形,m和n分别对应矩阵Y的行和列。stacked,意义与bar中的参数相同,将Y的每一行显示为一个条形,每个条形包括不同的色彩,对应于该行的每个元素。bar3(...,LineSpec),将所有的条形指定为相同的颜色,颜色的可选值与plot函数的可选值相同。

?填充图绘制向量构成的曲线,或者当输入参数为矩阵时,绘制矩阵的每一列为一条曲线,并填充曲线间的区域。

填充图可以直观显示向量的每个元素,或矩阵的每一列对总和的贡献大小。填充图由函数area绘制,下面介绍该函数的用法。该函数的调用格式为:

–area(Y),绘制向量Y或矩阵Y各列的和;

–area(X,Y),若X和Y是向量,则以X中的元素为横坐标,Y中元素为纵坐标绘制图像,并且填充线条和x轴之间的空间;如果Y是矩阵,则绘制Y每一列的和;

–area(...,basevalue),设置填充的底值,默认为0;

?饼状图是一种统计图形,用于显示每个元素占总体的百分比。在MATLAB中,函数pie和pie3分别用于绘制二维和三维饼状图。函数pie的调用格式为:pie(X),绘制X的饼状图,X的每个元素占有一个扇形,其顺序为从饼状图上方正中开始,逆时针为序,分别为X的各个元素,如果X为矩阵,则按照各列的顺序排列。在绘制饼状图时,如果X的元素和超过1,则按照每个元素所占有的百分比绘制图形;如果X的元素的和小于1,则按照每个元素的值绘制图形,绘制的图形不是一个完整的圆形。pie(X,explode),参数explode设置相应的扇形偏离整体图形,用于突出显示。explode一个与X维数相同的向量或矩阵,其元素为0或者1,非0元素对应的扇形从图形中偏离。pie(...,labels),标注图形,labels为元素为字符串的单元数组,元素个数必须与X的个数相同。

?直方图:hist和rose,分别用于在直角坐标系和极坐标系中绘制直方图。对於大量的资料,我们可用hist来显示资料的分布情况和统计特性。rose和hist很接近,只不过是将资料大小视为角度,资料个数视为距离。hist函数的调用格式为:n=hist(Y),绘制Y的直方图。n=hist(Y,x),指定直方图的每个分格,其中x为向量,绘制直方图时,以x的每个元素为中心创建分格。n=hist(Y,nbins),指定分格的数目。

x=randn(1000,1);

rose(x);

?罗盘图由函数compass绘制,该函数的调用格式为:compass(U,V),绘制罗盘图,数据的x分量和y分量分别由U 和V指定;compass(Z),绘制罗盘图,数据由Z指定;compass(...,LineSpec),绘制罗盘图,指定线型;compass(axes handle,...),在“axes handle”指定的坐标系中绘制罗盘图;h=compass(...),绘制罗盘图,同时返回图形句柄;

?stairs可画出阶梯图:

x=linspace(0,10,50);

y=sin(x).*exp(-x/3);

stairs(x,y);

stems可产生针状图,常被用来绘制数位讯号:

x=linspace(0,10,50);

y=sin(x).*exp(-x/3);

stem(x,y);

?羽状图由函数feather绘制,该函数的调用格式为:feather(U,V),绘制由U和V指定的向量;feather(Z),绘制由Z指定的向量;feather(...,LineSpec),指定线型;feather(axes handle,...),在指定的坐标系中绘制羽状图;h= feather(...),绘制羽状图,同时返回图像句柄。

?stairs将资料点视为多边行顶点,并将此多边行涂上颜色:

x=linspace(0,10,50);

y=sin(x).*exp(-x/3);

?ll(x,y,’b’);

feather将每一个资料点视复数,并以箭号画出:

theta=linspace(0,2*pi,20);

z=cos(theta)+i*sin(theta);

feather(z);

compass和feather很接近,只是每个箭号的起点都在圆点:

theta=linspace(0,2*pi,20);

z=cos(theta)+i*sin(theta);

compass(z);

?二维矢量图和三维矢量图。矢量图在空间中指定点绘制矢量。用于绘制二维矢量图和三维矢量图的函数分别为:quiver和quiver3,两个函数的调用格式基本相同,下面仅以二维矢量图为例,介绍矢量图的绘制。函数quiver 的主要调用格式为:quiver(x,y,u,v),绘制矢量图,参数x和y用于指定矢量的位置,u和v用于指定待绘制的矢量;quiver(u,v),绘制矢量图,矢量的位置采用默认值矢量图通常绘制在其他图形中,显示数据的方向,如在梯度图中绘制矢量图用于显示梯度的方向。

§5.5图形的修饰与标注

为图形添加注释能够增加图形的可读性,增强图形传递信息的能力。本节介绍MATLAB的图形注释功能,包括:

在图形中添加基本注释,包括文本框、线条、箭头、框图等;注释的排列;为图形添加其他注释,如标题、坐标轴、颜

色条、图例。

基本注释包括线头、箭头、文本框和用矩形或椭圆圈画出重要区域。这些注释的添加可以通过图形注释工具栏直

接完成。

在MATLAB图形中,标题位于图形的顶部,是一个文本串。标题与文本注释不同,文本注释可以位于图形中的任

何部分,并且标题不随图形的改变而改变。在MATLAB中,为图形添加标题的方式有三种:通过Insert菜单添加通过

属性编辑器添加标题通过命令语句添加。通过title函数可以在图像中添加标题,该函数的基本用法为:title(’string’),添加坐标轴标注的方法与添加标题的方法基本相同。添加坐标轴也可以通过Insert菜单、属性编辑器和函数三种

方式完成。

图例可以对图像中的各种内容做出注释。每幅图像可以包含一个图例。添加图例可以通过界面方式和命令方式完

成:通过Insert菜单中的Legend选项通过工具栏的Insert Legend添加图例通过函数legend添加图例设置图像为编辑模式。点击工具栏中的图例按钮,或者选择Insert菜单中的Legend选项,则MATLAB自动在图像

中生成图例,每条曲线对应图例的一项,图例中的标志为曲线对应的线型和颜色,注释默认为data1、data2…等接下来

对图例中的文字进行编辑,在需要编辑的文本上双击,出现光标提示输入,输入新的文本内容添加图例后可以对图例

进行编辑:改变图例的位置、改变图例的外观或删除图例

legend函数可以在任何图形上添加图例。对于曲线,legend函数为每条曲线生成一个标志,该标志包括线型示例、标

记和颜色;对于填充图,legend函数的标记为该区域的颜色。通过legend函数以指定图例中的文本、对图例进行显示控制

或者编辑图例的属性等。利用legend在图例中添加文本的指令有:legend(’string1’,’string2’,...)、legend(h,’string1’,’string2’,...),在(h指定的)图像中添加图例,图例中的文本通过字符串string1、string2等指定,字符串的顺序与图形对象绘制的顺

序对应,字符串的个数对应图例中对象的个数;legend(string matrix)、legend(h,string matrix),在(h指定的)图像中添

加图例,图例中的文本由字符串矩阵string matrix指定;legend(axes handle,...),在由坐标系句柄axes handle指定的坐

标系中添加图例。

通过文本工具gtext函数text函数

在图像中添加文本可以通过工具栏中的文本框来实现步骤如下:显示注释工具栏;使图像处于编辑状态,然后选

择文本框工具;在图像中需要添加文本的位置单击则可以激活输入框;

其调用格式为:gtext(’string’),在鼠标指定的位置添加文本,文本内容通过string指定;gtext(’string1’,’string2’,’string3’,...),通过鼠标一次指定添加位置,每个字符串为一行;h=gtext(...),添加文本,同时返回图像句柄。

text函数是一个底层函数,用于创建文本图形对象,该函数可以在图形中的指定位置添加文本注释。该函数的调

用格式为:text(x,y,’string’),在二维图形中的指定位置添加文本,x和y分别为指定位置的x坐标和y坐标,string为待

添加的文本内容;text(x,y,z,’string’),在三维图形中的指定位置添加文本;text(...’PropertyName’,PropertyValue...),添

加文本,并指定属性;h=text(...),添加文本,并返回句柄

输入文本内容

MATLAB提供了一些特殊的函数修饰画出的图形,这些函数如下:

1)坐标轴的标题:title函数

其调用格式为:title(’字符串’)——字符串可以写中文

如:title(’My own plot’)

2)坐标轴的说明:xlabel和ylabel函数

格式:xlabel(’字符串’)

ylabel(’字符串’)

如:xlabel(’This is my X axis’)

ylabel(’My Y axis’)

3)图形说明文字:text和gtext函数

A.text函数:按指定位置在坐标系中写出说明文字.

格式为:text(x1,y1,’字符串’,’选项’)

x1,y1为指定点的坐标;’字符串’为要标注的文字;’选项’决定x1,y1的坐标单位,如没有选项,则x1,y1的坐标单位和图中

一致;如选项为’sc’,则x1,y1表示规范化窗口的相对坐标,其范围为0到1.

如:text(1,2,’正弦曲线’)

B.gtext函数:按照鼠标点按位置写出说明文字.

格式为:gtext(’字符串’)

当调用这个函数时,在图形窗口中出现一个随鼠标移动的大十字交叉线,移动鼠标将十字线的交叉点移动到适当的

位置,点击鼠标左键,gtext参数中的字符串就标注在该位置上.

4)给图形加网格:grid函数

在调用时直接写grid即可.

上面的函数的应用实例:

例:在图形中加注坐标轴标识和标题及在图形中的任意位置加入文本.

t=0:pi/100:2*pi;

y=sin(t);

plot(t,y),grid,

axis([02*pi-11])

xlabel(’0leq itt rm leq pi’,’FontSize’,16)

ylabel(’sin(t)’,’FontSize’,20)

title(’正弦函数图形’,’FontName’,’隶书’,’FontSize’,20)

text(pi,sin(pi),’leftarrowsin(t)=0’,’FontSize’,16)

text(3*pi/4,sin(3*pi/4),’leftarrowsin(t)=0.707’,’FontSize’,16)

text(5*pi/4,sin(5*pi/4),’sin(t)=-0.707rightarrow’,...

’FontSize’,16,’HorizontalAlignment’,’right’)

5)在图形中添加图例框:legend函数

其调用格式为:

A.legend(’字符串1’,’字符串2’,……)——以字符串1,字符串2……作为图形标注的图例.

B.legend(’字符串1’,’字符串2’,……,pos)——pos指定图例框显示的位置.

图例框被预定了6个显示位置:

0——取最佳位置;1——右上角(缺省值);2——左上角;3——左下角;4——右下角;-1——图的右侧.

例:在图形中添加图例.

x=0:pi/10:2*pi;

y1=sin(x);

y2=0.6*sin(x);

y3=0.3*sin(x);

plot(x,y1,x,y2,’-o’,x,y3,’-*’)

legend(’曲线1’,’曲线2’,’曲线3’)

6)用鼠标点选屏幕上的点:ginput函数

格式为:[x,y,button]=ginput(n)

其中:n为所选择点的个数;x,y均为向量,x为所选n个点的横坐标;y为所选n个点的纵坐标.button为n维向量,是所选n个

点所对应的鼠标键的标号:

1——左键;2——中键;3——右键.

可用不同的鼠标键来选点,以区别所选的点.

此语句可以放在绘图语句之后,它可在绘出的图形上操作,选择你所感兴趣的点,如峰值点,达到稳态值的点等,给出

点的坐标,可求出系统的性能指标.

§5.6MATLAB下图形对象的修改

MATLAB图形对象是指图形系统中最基本,最底层的单元,这些对象包括:屏幕(Root),图形窗口(Figures),坐标轴(Axes),控件(Uicontrol),菜单(Uimenu),线(Lines),块(Patches),面(Surface),图像(Images),文本(Text)等等.

对各种图形对象进行修改和控制,要使用MATLAB的图形对象句柄(Handle).在MATLAB中,每个图形对象创立时,就

被赋予了唯一的标识,这个标识就是该对象的句柄.句柄的值可以是一个数,也可以是一个矢量.如每个计算机的根对象

只有一个,它的句柄总是0,图形窗口的句柄总是正整数,它标识了图形窗口的序号.

利用句柄可以操纵一个已经存在的图形对象的属性,特别是对指定图形对象句柄的操作不会影响同时存在的其它

图形对象,这一点是非常重要的.

一.对图形对象的修改可以用下面函数:

1)set函数:用于设置句柄所指的图形对象的属性.

Set函数的格式为:

set(句柄,属性名1,属性值1,属性名2,属性值2,……)

例:h=plot(x,y)

set(h,’Color’,[1,0,0])——将句柄所指曲线的颜色设为红色.

2)get函数:获取指定句柄的图形对象指定属性的当前值.

格式为:get(句柄,’属性名’)

如:get(gca,’Xcolor’)——获得X轴的当前颜色属性值.

执行后可返回X轴的当前颜色属性值[0,0,0](黑色).

3)如果没有设置句柄,则可以使用下列函数获得:

gcf:获得当前图形窗口的句柄;

gca:获得当前坐标轴对象的句柄;

gco:获得当前对象的句柄.

如:

A.要对图形窗口的底色进行修改,可用:

set(gcf,’Color’,[1,1,1])——将图形窗口底色设为白色

B.要把当前X轴的颜色改为绿色,可用:

set(gca,’Xcolor’,[0,1,0])

C.还可对坐标轴的显示刻度进行定义:

t=-pi:pi/20:pi;

y=sin(t);

plot(t,y)

set(gca,’xtick’,[-pi:pi/2:pi],’xticklabel’,[’-pi’,’-pi/2’,’0’,’pi/2’,’pi’])

本例中用’xtick’属性设置x轴刻度的位置(从-pi pi,间隔pi/2,共设置5个点),用’xticklabel’来指定刻度的值,由于通常习惯于用角度度量三角函数,因此重新设置[’-pi’,’-pi/2’,’0’,’pi/2’,’pi’]5个刻度值.

二.一些常用的属性如下:

1)Box属性:决定图形坐标轴是否为方框形式,选项为’on’(有方框),’o?’(无方框);

2)’ColorOrder’属性:设置多条曲线的颜色顺序,默认值为:

[110;101;011;100;010;001]

黄色粉色天蓝红色绿色兰色

颜色向量还有:[111]——白色;[000]——黑色.

3)坐标轴方向属性:’Xdir’,’Ydir’,’Zdir’,其选项为:

’normal’——正常

’reverse’——反向

4)坐标轴颜色和线型属性:’Xcolor’,’Ycolor’,’Zcolor’——轴颜色,

值为颜色向量

’LineWidth’——轴的线宽,值为数字

’Xgrid’,’Ygrid’,’Zgrid’——坐标轴上是否加网格,值为’on’和’o?’.

5)坐标轴的标尺属性:’Xtick’,’Ytick’,’Ztick’——标度的位置,值为向量

’Xticklabel’,’Yticklabel’,’Zticklabel’——轴上标度的符号,它的值为与标度位置向量同样大小(向量个数相同)的向量.

5)字体设置属性:’FontAngle’——设置字体角度,选项为:

’normal’——正常;

’italic’——斜体;

’oblique’——倾斜;

’FontName’——字体名称;

’FontSize’——字号大小

’FontWeight’——字体的轻重,选项为:’light’,

’normal’,’bold’

matlab的RBF-BP神经网络讲义

matlab的RBF BP神经网络讲义 一、RBF神经网络 1985年,Powell提出了多变量插值的径向基函数(Radical Basis Function,RBF)方法, 1988年,Moody和Darken提出了一种神经网络结构,即RBF神经网络。 RBF网络是一种三层前向网络,其基本思想是:(1)用RBF作为隐单元的“基”构成隐含层空间,将输入矢量直接(即不需要通过权连接)映射到隐空间(2)当RBF的中心点确定后,映射关系也就确定(3)隐含层空间到输出空间的映射是线性的。 newrb()函数 功能 建立一个径向基神经网络 格式 net = newrb(P,T,GOAL,SPREAD,MN,DF) 说明 P为输入向量,T为目标向量,GOAL为圴方误差,默认为0,SPREAD为径向基函数的分布密度,默认为1,MN为神经元的最大数目,DF为两次显示之间所添加的神经元神经元数目。 例子: 设[P,T]是训练样本,[X,Y]是测试样本; net=newrb(P,T,err_goal,spread); %建立网络 q=sim(net,p); e=q-T; plot(p,q); %画训练误差曲线 q=sim(net,X); e=q-Y; plot(X,q); %画测试误差曲线 二、BP神经网络 训练前馈网络的第一步是建立网络对象。函数newff()建立一个可训练的前馈网络。这需要4个输入参数。 第一个参数是一个Rx2的矩阵以定义R个输入向量的最小值和最大值。 第二个参数是一个设定每层神经元个数的数组。 第三个参数是包含每层用到的传递函数名称的细胞数组。 最后一个参数是用到的训练函数的名称。 举个例子,下面命令将创建一个二层网络。它的输入是两个元素的向量,第一层有三个神经元(3),第二层有一个神经元(1)。 第一层的传递函数是tan-sigmoid,输出层的传递函数是linear。 输入向量的第一个元素的范围是-1到2[-1 2],输入向量的第二个元素的范围是0到5[0 5],训练函数是traingd。 net=newff([-1 2; 0 5],[3,1],{'tansig','purelin'},'traingd'); 这个命令建立了网络对象并且初始化了网络权重和偏置,因此网络就可以进行训练了。 我们可能要多次重新初始化权重或者进行自定义的初始化。 下面就是初始化的详细步骤。 在训练前馈网络之前,权重和偏置必须被初始化。初始化权重和偏置的工作用命令init来实

MatLab讲义

2011年数学中国国赛培训讲座 Matlab的基础及数学建模中的应用 周吕文:zhou.lv.wen@https://www.doczj.com/doc/0f13920054.html, 大连大学数学建模工作室&中国科学院力学研究所 2011年7月

第一部分 MatLab基础 1 简单介绍 MATLAB是Matrix Laboratory“矩阵实验室”的缩写。MatLab语言是由美国的Clever Moler博士于1980年开发的,初衷是为解决“线性代数”课程的矩阵运算问题。1984年由美国 MathWorks公司推向市场,历经十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境。MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。 在数学建模竞赛中,由于只有短短的三到四天,而论文的评判不仅注重计算的结果更注重模型的创造性等很多方面,因此比赛中把大量的时间花费在编写和调试程序上只会喧宾夺主,是很不值得的。使用MATLAB 可以很大程度上的方便计算、节省时间,使我们将精力更多的放在模型的完善上,所以是较为理想的。 这里快速的介绍一下MATLAB与数学建模相关的基础知识,并列举一些简单的例子,很多例子都是源于国内外的数学建模赛题。希望能帮助同学们在短时间内方便、快捷的使用MATLAB 解决数学建模中的问题。当然要想学好MatLab更多的依赖自主学习,一个很好的学习MatLab的方法是查看MatLab的帮助文档: z如果你知道一个函数名,想了解它的用法,你可以用'help'命令得到它的帮助文档:>>help functionname z如果你了解含某个关键词的函数,你可以用'lookfor'命令得到相关的函数: 2 基本命令与函数 基本运算 z变量的赋值 实数赋值>> x=5; 复数赋值>> x=5+10j; (或>>x=5+10i) z向量的一般值方法 行向量赋值:>>x=[1 2 3]; (或x=[1, 2 ,3]) 列向量赋值:>>y=[1;2;3]; 矩阵的赋值:>>x=[1 2 3; 4 5 6; 7 8 9]; z常用矩阵(zeros ones eye) n行m列0矩阵:>>x=zeros(n,m); n行m列1矩阵:>>x=ones(n,m); n 阶的单位阵:>>y=eye(n); z矩阵行列操作 >> A=[1 2 3;4 5 6;7 8 9] A= 1 2 3 4 5 6 7 8 9 >>x=A(1,3) %取第一行的第三列元素 x= 3

天津大学matlab讲义-应用基础第一章

MATLAB应用基础 赵国瑞 天津大学电子信息工程学院 计算机基础教学部 2000.3 制作

概述 MATLAB是世界流行的优秀科技应用软件之一。具有功能强大(数值计算、符号计算、图形生成、文本处理及多种专业工具箱)、界面友好,可二次开发等特点。 自1984年由美国MathWorks公司推向市场以来,先后发布了多个版本,1993年发布4.0版,1996年发布5.0版,1999年发布5.3版。目前发布的为6.5版。 MATLAB有专业和学生版之分。二者功能相同,但计算规模和计算难度有差别。 在国内外,已有许多高等院校把MATLAB列为本科生、研究生必须掌握的基本技能。我校自1999年列为研究生选修课程。而且有很多教师、研究生把它作为进行科研的重要工具。 国内关于MATLAB的书籍很多,如: 《精通MATLAB 5.3》张志涌等编著北京航空航天大学出版社,2000.8 《科学计算语言MATLAB简明教程》杜藏等编著南开大学出版社,1999.6 《精通MATLAB 5》张宜华编写清华大学出版社,1999.6 《精通MATLAB--综合辅导与指南》 Duane Hanselman、Bruce Littlefield编著李人厚等译较西安交通大学出版社,1998.1 等等 本课程主要介绍MATLAB 5.3的基本功能和基础知识。至于其包含的多种工具箱,如仿真工具箱、解非线性方程(组)工具箱、优化工具箱等,应通过本学习后,结合各专业自己进一步学习和使用。 第1章MATLAB基础 1.1 源文件(M-文件) 分为两类:函数文件和非函数文件。 都用扩展名.M 1.1.1函数文件 格式1(无返回值函数) function函数名(输入表) %称为函数头 函数体 例如: function box(opt_box); %BOX Axis box. % BOX ON adds a box to the current axes. % BOX OFF takes if off. % BOX, by itself, toggles the box state. % % BOX sets the Box property of the current axes. % % See also GRID, AXES. % Copyright (c) 1984-98 by The MathWorks, Inc. % $Revision: 1.5 $ $Date: 1997/11/21 23:32:59 $

MATLAB讲义

第一章基础准备及入门 什么是MATLAB? MATLAB是MathWorks公司于1984年推出的数学软件,是一种用于科学工程计算的高效率的高级语言。MATLAB最初作为矩阵实验室(Matrix Laboratory),主要向用户提供一套非常完善的矩阵运算命令。随着数值运算的演变,它逐渐发展成为各种系统仿真、数字信号处理、科学可是化的通用标准语言。 在科学研究和工程应用的过程中,往往需要大量的数学计算,传统的纸笔和计算机已经不能从根本上满足海量计算的要求,一些技术人员尝试使用Basic,Fortran,C\C++等语言编写程序来减轻工作量。但编程不仅需要掌握所用语言的语法,还需要对相关算法进行深入分析,这对大多数科学工作者而言有一定的难度。与这些语言相比, MATLAB的语法更简单,更贴近人的思维方式。用MATLAB编写程序,犹如在一张演算纸上排列公式和求解问题一样高效率,因此被称为“科学便笺式”的科学工程计算语言。 MATLAB由主包和功能各异的工具箱组成,其基本数据结构是矩阵。正如其名“矩阵实验室”,MATLAB起初主要是用来进行矩阵运算。经过MathWorks 公司的不断完善,时至今日,MATLAB已经发展成为适合多学科、多工作平台的功能强大的大型软件。 本章有两个目的:一是讲述MATLAB正常运行所必须具备的基础条件;二是简明系统地介绍高度集成的Desktop操作桌面的功能和使用方法。 本章的前两节分别讲述:MATLAB的正确安装方法和MATLAB 环境的启动。因为指令窗是MATLAB最重要的操作界面,所以本章用第 1.3、1.4 两节以最简单通俗的叙述、算例讲述指令窗的基本操作方法和规则。这部分内容几乎对MATLAB各种版本都适用。 MATLAB6.x 不同于其前版本的最突出之处是:向用户提供前所未有的、成系列的交互式工作界面。了解、熟悉和掌握这些交互界面的基本功能和操作方法,将使新老用户能事半功倍地利用MATLAB去完成各种学习和研究。为此,本章特设几节用于专门介绍最常用的交互界面:历史指令窗、当前目录浏览器、工作空间浏览器、内存数组编辑器、交互界面分类目录窗、M文件编辑/调试器、及帮助导航/浏览器。 本章是根据MATLAB6.5版编写的,但大部分内容也适用于其他6.x版。 1.1M ATLAB的安装和内容选择

MATLAB软件基础知识讲义(doc 74页)

MATLAB软件基础 §1MATLAB 概述 MATLAB 是MATrix LABoratory(“矩阵实验室”)的缩写,是由美国MathWorks 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。 20世纪80年代初期,Cleve Moler与John Little等利用C语言开发了新一代的MATLAB语言,此时的MATLAB语言已同时具备了数值计算功能和简单的图形处理功能。1984年,Cleve Moler与John Little等正式成立了Mathworks公司,把MA TLAB 语言推向市场,并开始了对MATLAB工具箱等的开发设计。1993年,Mathworks公司推出了基于个人计算机的MATLAB 4.0版本,到了1997年又推出了MATLAB 5.X版本(Release 11),并在2000年又推出了最新的MATLAB 6版本(Release 12)。 现在,MATLAB已经发展成为适合多学科的大型软件,在世界各高校,MATLAB已经成为线性代数、数值分析、数理统计、优化方法、自动控制、数字信号处理、动态系统仿真等高级课程的基本教学工具。特别是最近几年,MATLAB在我国大学生数学

建模竞赛中的应用,为参赛者在有限的时间内准确、有效的解决问题提供了有力的保证。 概括地讲,整个MATLAB系统由两部分组成,即MATLAB 内核及辅助工具箱,两者的调用构成了MATLAB的强大功能。MATLAB语言以数组为基本数据单位,包括控制流语句、函数、数据结构、输入输出及面向对象等特点的高级语言,它具有以下主要特点: 1)运算符和库函数极其丰富,语言简洁,编程效率高,MATLAB 除了提供和C语言一样的运算符号外,还提供广泛的矩阵和向量运算符。利用其运算符号和库函数可使其程序相当简短,两三行语句就可实现几十行甚至几百行C或FORTRAN的程序功能。 2)既具有结构化的控制语句(如for循环、while循环、break 语句、if语句和switch语句),又有面向对象的编程特性。 3)图形功能强大。它既包括对二维和三维数据可视化、图像处理、动画制作等高层次的绘图命令,也包括可以修改图形及编制完整图形界面的、低层次的绘图命令。 4)功能强大的工具箱。工具箱可分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、图

Matlab基础知识点汇总

MATLAB讲义 第一章 MATLAB系统概述 1.1 MATLAB系统概述 MATLAB(MATrix LABoratory)矩阵实验室的缩写,全部用C语言编写。 特点: (1)以复数矩阵作为基本编程单元,矩阵运算如同其它高级语言中的语言变量操作一样方便,而且矩阵无需定义即可采用。 (2)语句书写简单。 (3)语句功能强大。 (4)有丰富的图形功能。如plot,plot3语句等。 (5)提供了许多面向应用问题求解的工具箱函数。目前,有20多个工具箱函数,如信号处理、图像处理、控制系统、系统识别、最优化、神经网络的模糊系统等。 (6)易扩充。 1.2 MATLAB系统组成 (1)MATLAB语言 MATLAB语言是高级的矩阵、矢量语言,具有控制流向语句、函数、数据结构、输入输出等功能。同时MATLAB又具有面向对象编程特色。MATLAB语言包括运算符和特殊字符、编程语言结构、字符串、文件输入/输出、时间和日期、数据类型和结构等部分。 (2)开发环境 MATLAB开发环境有一系列的工具和功能体,其部分具有图形用户界面,包括MATLAB桌面、命令窗口、命令历史窗口、帮助游览器、工作空间、文件和搜索路径等。 (3)图形处理 图形处理包括二维、三维数据可视化,图像处理、模拟、图形表示等图形命令。还包括低级的图形命令,供用户自由制作、控制图形特性之用。 (4)数学函数库 有求和、正弦、余弦等基本函数到矩阵求逆、求矩阵特征值和特征矢量等。 MATLAB数学函数库可分为基本矩阵和操作、基本数学函数、特殊化数学函数、线性矩阵函数、数学分析和付里叶变换、多项式和二重函数等。 (5)MATLAB应用程序接口(API) MATLAB程序可以和C/C++语言及FORTRAN程序结合起来,可将以前编写的C/C++、FORTRAN语言程序移植到MATLAB中。 1.3 MATLAB的应用围包括: MATLAB的典型应用包括: ●数学计算 ●算法开发 ●建模、仿真和演算 ●数据分析和可视化 ●科学与工程绘图 ●应用开发(包括建立图形用户界面) 以矩阵为基本对象 第二章 Matlab基础

Matlab基础教程

1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。 小提示: MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2);

若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开

matlab讲义要点

前期知识:高等数学,机械原理,液压传动,控制原理 学习目标:了解基本原理、掌握基本应用、熟练使用matlab 、精通机械工程的建模和仿真 本课计划:课堂学习、课后练习、 任务:要看课堂笔记 引例:斐波纳西数列的递推公式为)2()1()(--+=n n n F F F ,通项表达式是什么? 高等数学上册第48页。斐波纳西数列在优化设计和股票分析中有用处。 第1章 了解Matlab 本章要求:了解Matlab 的功能、组成 第1节 Matlab 的界面 1.命令窗口:输入命令和显示运行结果和寻求帮助的窗口。 第1个例子求不定积分 问题:在编写代码时不能输入或者不能显示汉字 解决办法:将use custom font 换成use desktop font

先定义一个符号变量x syms x 设2 11 )(x x f += 求不定积分 ?dx x f )( matlab 求解:int(1/(1+x .^2)) 详见l1_bdjf.m 最重要的问题一:工作路径 查看当前工作路径的命令是 pwd matlab 默认的路径为安装好的目录下work ,为了需要我们需要改换路径。 改换路径的方法有:(1)采用DOS 命令 mkdir('根目录名称','新目录名称') 例:mkdir('d:\','mywork') 如果d 盘下没有mywork 即创建,如有就会给出警告。 进入新建文件夹 cd d:\mywork (2)采用matlab 命令 editpath ,pathtool (3)通过matlab 界面 [file]菜单->set path 难点:我想将打开MATLAB 时的默认工作路径改为F:\Program\MATLAB\WorkSpace\ ,只需要在原来的默认路径(bin)下创建一个名为startup.m 的文件,内容为相对路径 cd ..\..\WorkSpace\ 或绝对路径 cd F:\Program\MATLAB\WorkSpace\ 即可。再次打开MA TLAB 时便会自动执行startup.m 文件,将工作路径转至WorkSpace 下。 最重要的问题二:工作路径设置不能设置在有汉字的目录下或汉字文件夹,不支持汉字运算。 汉字用的是Unicode 编码一个字符占两个字节,字母用的是ASC Ⅱ编码,一个字母占一个字节。到2008版才能处理汉字。 初学者容易出现的错误就是把别人的程序拷在带汉字的文件夹下,运行出现错误。 如果我们已知某个文件名,但忘了在哪个文件夹下,可以用which 命令如which FUN what 命令:M-files in the current directory 思考题:what 和dir 的区别? 2.工作空间:显示数据的变量信息,包括变量名、字节大小、变量类型等。 输入 load wind 和load cities 加载了后缀为mat 的wind 和cities 数据文件 在命令窗口输入who 就可以列出空间的变量 在命令窗口输入whos 可以列出名称、大小和类型 whos -file 文件名.mat 可以查看加载前的数据信息。 3.历史记录: 显示所有在命令窗口输入的执行过的命令,清除历史的方法有两种

matlab讲义

2.3终值及其应用 2.3.1终值的概念 终值是与现值相对的概念,是指当前的一项现金流在未来某个时刻的价值。在求终值问题时应该考虑单利和复利的问题,一般如果没有特别的说明则都是按照复利(离散复利)进行计算。 在复利计息的情况下,当前的现金流PV在利率为r时到第t期期末的终值为: t FV) = 1(+ r PV 2.3.2终值的计算 在Matlab中,用来计算现金流的终值的函数有fvfix和fvvar两个。同样,-fix函数用来计算规则现金流的终值;而-var函数则用来计算不规则现金流的终值。 【例2.9】一投资者的储蓄账户初始余额为$1500,在随后的10年中,每月末都会收到$200并存入该账户,银行的年利率为9%。试计算其到期时的价值。 通过执行fvfix函数命令: FutureVal = fvfix(Rate, NumPeriods, Payment, PresentVal, Due) 即可计算出该固定收入现金流的的终值。 变量解释: Rate:周期性收支的利息率,以小数的形式输入; NumPeriods:周期性收支的次数; Payment:每期收支的现金流数额; PresentVal:初始余额 Due:收支被预定或确定的时间:0表示在期末收支(默认值),1表示在期初收支(任选)。 输入命令: >>FutureVal = fvfix(0.09/12, 12*10, 200, 1500, 0) 输出结果: FutureVal = 42379.89 即该现金流到期时的价值为42379.89$。 【例2.10】设某投资者期初投资为$10,000,在随后的5年投资期中每年产生的收入流依次为$2000、$1500、$3000、$3800、$5000,年利率为8%。试计算该现金流到期时的价值。 通过执行fvvar函数命令: FutureVal = fvvar(CashFlow, Rate, IrrCFDates) 即可求出这个规则(周期性的)现金流的终值。 输入命令: >>FutureVal = fvvar([-10000 2000 1500 3000 3800 5000], 0.08) 输出结果: FutureVal = 2520.47 即该现金流到期时的价值为2520.47$。 如果期初投资的$10,000产生的是一个不规则的现金流(如下所示),则计算时要将期初的投资和各个现金流发生的日期也考虑进去。利率为9%。

天津大学matlab讲义-应用基础第二章

第2章MATLAB程序设计 MATLAB语言为解释型程序设计语言。在程序中可以出现顺序、选择、循环三种基本控制结构,也可以出现对M-文件的调用(相当于对外部过程的调用)。 由于 MATLAB开始是用FORTRAN语言编写、后来用 C语言重写的,故其既有FORTRAN的特征,又在许多语言规则方面与C语言相同。 2.1 顺序结构语句 在顺序结构语句中,包括表达式语句、赋值语句、输入输出语句、空语句等。 2.1.1 表达式语句 格式: 表达式,%显示表达式值 表达式;%不显示表达式值 表达式%显示表达式值 如: x + y, sin(x); –5 最后的表达式值暂保存在变量ans中。 2.1.2 赋值语句 格式: v =表达式,%结果送v并显示v v =表达式;%结果送v不显示v v =表达式%结果送v并显示v 2.1.3 空语句 格式:

, ; 2.1.4 输入语句 1、input语句(实际上是函数) 格式1: input(提示字符串) 功能: 显示提示字符串,可输入数字、字符串(两端用单引号括起)、或表达式 格式2: input(提示字符串,'s') 功能: 显示提示字符串,并把输入视为字符串 2、yesinput语句 格式: yesinput(提示字符串,缺省值,值范围) 功能: 显示提示字符串和缺省值,若只打入回车则以缺省值作为输入值,若输入的值不在指定范围内则认为输入无效,B并等待用户重新输入。 如: t=yesinput('指定线的颜色',… 'red','red|blue|green') 运行结果如下: 指定线的颜色(red):yellow %不在值内 指定线的颜色(red):blue %重输 t = blue x=yesinput('输入元素个数',10,[1,20]) 运行结果如下: 输入元素个数(10): x = 10 3、Keyboard语句 格式: Keyboard 功能: 暂停M-文件的执行,并等待用户从键盘输入命令以查看或改变变量的值,直到输入return命令而返回相应的M-文件继续执行。本语句用于调试M-文件。 4、pause语句 格式1: pause 功能:暂停,敲下任一键继续 格式2: pause(n)

matlab串口通信基础讲义

matlab串口通信基础讲义 ①支持基于串行接口(RS-232、RS-422、RS-485)、GPIB总线(IEEE2488、HPIB标准)、VISA总线的通信; ②通信数据支持二进制和文本(ASCII)两种方式,文本方式支持SCPI(Standard Commands for Programmable Instruments)语言; ③支持异步通信和同步通信; ④支持基于事件驱动的通信。 从以上的Matlab设备控制工具箱的特点可以看到,Matlab完全可以满足我们实现串行通信的要求。 3.1 Matlab对串行口控制的基础知识 Matlab对串行口的编程控制主要分为四个步骤。 ①创建串口设备对象并设置其属性。 scom=serial('com1');%创建串口1的设备对象scom scom.Terminator='CR';%设置终止符为CR(回车符),缺省为LF(换行符) scom.InputBufferSize=1024;%输入缓冲区为256B,缺省值为512B scom.OutputBufferSize=1024;%输出缓冲区为256B,缺省值为512B scom.Timeout=0.5;%Y设置一次读或写操作的最大完成时间为0.5s,缺省值为10s s.ReadAsyncMode='continuous'(缺省方式);%在异步通信模式方式下,读取串口数据采用连续接收数据(continuous)的缺省方式,那么下位机返回的数据会自动地存入输入缓冲区中. 注意:在些属性只有在对象没有被打开时才能改变其值,如InputBufferSize、OutputBufferSize属性等。对于一个RS-232/RS-422/RS-485串口设备对象,其属性的缺省值为波特率9 600b/s,异步方式,通信数据格式为8位数据位,无奇偶校验位,1位停止位。如果要设置的串口设置对象的属性值与缺省值的属性值相同,用户可以不用另行设置。 另外,设置串口设置对象的属性也可以用一条指令完成,如:scom=serial('COM1','BaudRate',38400,'Parity','none','DataBits',8,'StopBits',1)。也可以用set命令,如set(scom,'BaudRate',19200,'Parity','even')。创建了对象后可以在Matlab命令窗口直接敲对象名并回车,看到其基本属性和当前状态。若需要知道其全部的属性,可以用get(scom)命令。

基于MATLAB的时序逻辑电路设计与仿真上课讲义

基于M A T L A B的时序逻辑电路设计与仿真

课程设计任务书 学生姓名:田鑫专业班级:电子科学与技术 0703 班 指导教师:钟毅工作单位:信息工程学院 题目: 基于MATLAB的时序逻辑电路设计与仿真 初始条件: MATLAB 软件微机 要求完成的主要任务: 深入研究和掌握数字电路中时序逻辑电路的理论知识。利用MATLAB强大的图形处理功能、符号运算功能和数值计算功能,实现时序逻辑电路的设计和仿真。 一、以寄存器为例仿真下列波形 并行寄存器输出波形(以基本RS触发器构造); 移位寄存器输出波形(用D触发器构造) 二、以双向移位寄存器为例实现子系统的设计和封装并仿真下列波形 4位双向移位寄存器并行输出波形; 4位双向移位寄存器串行右移输出波形; 4位双向移位寄存器串行左移输出波形 三、以扭环计数器为例仿真下列波形 扭环计数器的输出波形(以JK触发器实现) 时间安排:

学习MATLAB语言的概况第1天 学习MATLAB语言的基本知识第2、3天 学习MATLAB语言的应用环境,调试命令,绘图能力第4、5天 课程设计第6-9天 答辩第10天 指导教师签名: 年月日 系主任(或责任教师)签名:年月日

目录 摘要 (4) Abstract (4) 绪论 (1) 1M A T L A B简介 (2) 1.1 MATLAB程序设计 (2) 1.2M A T L A B的特点 (2) 1.3MATLAB程序设计 (2) 1.4 M文件 (2) 1.5 SIMULINK仿真设计 (3) 1.5.1创建和使用模型 (3) 1.5.2选择和定制模块 (3) 1.5.3建立和编辑模型 (4) 1.5.4配置子系统 (4) 1.5.5条件执行子系统 (4) 2时序逻辑电路设计 (5) 2.1锁存器和触发器 (5) 2.1.1双稳态 (5)

讲义2 Matlab基本语句

讲义2 Matlab基本语句 一. 程序控制语句 1. 循环语句 MATLAB的循环语句包括for循环和while循环两种类型。 1)for循环 语法格式: for 循环变量 = 起始值:步长:终止值 循环体 end 起始值和终止值为一整形数,步长可以为整数或小数,省略步长时,默认步长为1。执行for循环时,判定循环变量的值是否大于(步长为负时则判定是否小于)终止值,不大于(步长为负时则小于)则执行循环体,执行完毕后加上步长,大于(步长为负时则小于)终止值后退出循环。 例1给矩阵A、B赋值。 MATLAB 语句及运行结果如下: k=5; a=zeros(k, k) %矩阵赋零初值 for m=1 : k for n=1: k a(m,n)=1/(m+n-1) end end for i=m : -1 : 1 b(i)=i end 运行结果: a= 1.0000 0.5000 0.3333 0.2500?0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429

0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111 b= 1 2 3 4 5 2) while循环 语法格式: while 表达式 循环体 end 其执行方式为:若表达式为真(运算值非0),则执行循环体;若表达式为假(运算结果为0),则退出循环体,执行end后的语句。 例2 a=3; while a a=a-1 end 输出: a=2 a=1 a=0 2. 条件转移语句 条件转移语句有if和switch两种。 1) if语句 MATLAB中if语句的用法与其他高级语言相类似,其基本语法格式有以下几种: 格式一: if 逻辑表达式 执行语句 end

相关主题
相关文档 最新文档