MATLAB优化.docx

上传人:b****4 文档编号:6773910 上传时间:2023-05-10 格式:DOCX 页数:36 大小:169.31KB
下载 相关 举报
MATLAB优化.docx_第1页
第1页 / 共36页
MATLAB优化.docx_第2页
第2页 / 共36页
MATLAB优化.docx_第3页
第3页 / 共36页
MATLAB优化.docx_第4页
第4页 / 共36页
MATLAB优化.docx_第5页
第5页 / 共36页
MATLAB优化.docx_第6页
第6页 / 共36页
MATLAB优化.docx_第7页
第7页 / 共36页
MATLAB优化.docx_第8页
第8页 / 共36页
MATLAB优化.docx_第9页
第9页 / 共36页
MATLAB优化.docx_第10页
第10页 / 共36页
MATLAB优化.docx_第11页
第11页 / 共36页
MATLAB优化.docx_第12页
第12页 / 共36页
MATLAB优化.docx_第13页
第13页 / 共36页
MATLAB优化.docx_第14页
第14页 / 共36页
MATLAB优化.docx_第15页
第15页 / 共36页
MATLAB优化.docx_第16页
第16页 / 共36页
MATLAB优化.docx_第17页
第17页 / 共36页
MATLAB优化.docx_第18页
第18页 / 共36页
MATLAB优化.docx_第19页
第19页 / 共36页
MATLAB优化.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

MATLAB优化.docx

《MATLAB优化.docx》由会员分享,可在线阅读,更多相关《MATLAB优化.docx(36页珍藏版)》请在冰点文库上搜索。

MATLAB优化.docx

MATLAB优化

MATLAB基础知识

第1章MATLAB初步

1.启动和停止

如果想要终止MATLAB的运行,就要同时按下‘CTRL’和‘c’键。

MATLAB将停止其运行的所有工作,并且在屏幕上给出提示符,等待输入。

借助箭头键,能重复先前所给的命令。

如果输入有误,它就能避免再写过长的表达式,这样能节省很多时间。

帮助命令helpcommand对指定的命令给出帮助

2.基本赋值和计算

●通常,MATLAB能被当作计算器使用:

20+30

ans=50

●同一行上可以有多条命令,以,或;分隔

3.MATLAB中的变量

●在MATLAB中,变量名可以有19个字符。

字母A~Z、a~z、数字和下划线‘_’可以作为变量名,但第一个字符必须是一个字母。

预定义函数名也可以像一个变量名那样使用,但函数只有在变量由命令clear删除后才能使用,所以,不主张这样使用。

●MATLAB是区分大小字母的,如矩阵a和A是不一样的。

MATLAB命令通常是用小写字母书写。

例如,命令abs(A)给出了A的绝对值,但ABS(A)会导致在屏幕上显示错误信息.

●在变量使用之前,用户不需要指定一个变量的数据类型,也不必声明变量。

MATLAB有许多不同的数据类型,logical(x)返回一个可以使用的逻辑向量,例如逻辑索引或逻辑测试。

允许在同一命令行上定义多个变量,也可以在按回车键之前通过输入三个点“…”以便在下一行继续输入。

定义变量并赋值:

x=14*3

x=

42

●所有的基本数学函数在MATLAB中有定义

sin(x)%x为弧度

ans=

-0.9165

可在数学式子中使用圆括号’()’。

y=(1+2*x)/3;

u=sin(x)*y;

注意,在命令行尾的分号‘;’使MATLAB执行赋值命令时,在屏幕上不回显信息。

没有结尾分号的每个命令在屏幕上显示出其结果。

●MATLAB中的变量通常为向量或矩阵向量:

同一行的元素是由空格‘’或逗号‘,’分隔,不同行由分号‘;’或回车键分隔。

vcol=[1;2;3;4],vrow=[5678]%行向量和列向量定义法

vcol=

1

2

3

4

vrow=

5678

A=[123;456;789]%矩阵定义法

A=

123

456

789

注意,各行要用分号隔开。

●在单个命令中,函数可用于向量或矩阵。

sqrt(vcol)

ans=

1.0000

1.4142

1.7321

2.0000

●矩阵逐个元素地置值(矩阵元素表示法):

B(1,1)=1;

B(1,2)=7;

B(2,1)=-5;

B(2,2)=0

得到的结果是:

B=

17

-50

●创建一个多维矩阵有多种方法。

有两个二维矩阵A和B

A=[123;456];B=[111213;141516];

可以很容易地构造一个三维矩阵C:

C(:

,:

,1)=A;

C(:

,:

,2)=B;

给出:

c(:

:

1)=

123

456

c(:

:

2)=

111213

141516

●显示一个变量的值。

输入vrow,MATLAB显示:

vrow=

5678

●输入以下命令,可以得到变量列表:

who

Yourvariablesare:

Auvrowx

ansvcoly

命令whos也将显示当前的变量,同时还显示出每个变量的其他信息,如是标量还是向量等。

Workspace窗口也显示当前的变量的信息并可修改变量的值.

●MATLAB在程序运行过程中保存所有的变量,清除变量应输入:

Clear

先前的变量现在全被清除。

此时,如果输入who,将不会返回任何信息;

●向量可通过使用元素操作运算符来生成。

vector=0:

8

vector=

012345678

vector2=0:

0.5:

2

vector2=

00.50001.00001.50002.0000

●命令linspace和logspace也可用来创建向量。

●通过使用双操作符向量也可直接计算(对各元分别计算)。

values=2.^vector

values=

1248163264128256

注意,这里使用的运算符.^表示应对向量中的每一个元素进行操作。

将向量或矩阵放入括号中能定义一个新的表达式,但是大小必须匹配:

table=[vector;vector.^2]

table=

012345678

01491625364964

●MATLAB中预定义变量

ans分配最新计算表达式的值,这个表达式并没有给定一个名字。

eps返回机器精度,定义1与最接近可代表的浮点数之间的差。

eps数在一些命令中用作偏差。

用户可以设定一个新的eps值,但要注意这个eps值不能由命令clear恢复。

realmax返回计算机能处理的最大浮点数。

realmin返回计算机能处理的最小的非零浮点数。

pi返回,即3.141592653589793,如果eps足够小,那么用16位十进制数来表示其精度。

inf定义为1/0。

当出现被零除时,MATLAB就返回inf,并不中断执行而继续计算。

NaN定义为“NotaNumber”,这个非数值要么是%类型,要么是inf/inf。

4.算术表达式和数学函数

对十进制数,例如3.14和1.23E-6,后者代表1.23×10-6。

●MATLAB有算术运算符的扩展集,它们是:

1)^幂

2)*乘

/右除(正常除)右除2/5得0.4与左除5\2是相同的,

\左除斜线号“靠着”的表达式或数字是分母。

3)+加-减

1是最高优先级。

在带相同优先级的运算符表达式中,按从左到右的顺序执行。

圆括号()能够用于改变优先级次序。

●MATLAB包含了预定义数学函数,它们可以用于算术表达式中。

如果自变量是复数,那么,多数情况下返回值也是复数。

abs(x)值,即|x|。

sign(x)求x的符号,如果是正的得1;负的得-1;零得0。

sqrt(x)求x的平方根,即。

pow2(x,f)求x×2f.

exp(x)求x的指数函数,即ex。

log(x)求x的自然对数,即lnx。

log10(x)求x以10为底的对数,即log10x。

log2(x)求x以2为底的对数,即log2x。

sin(x)求正弦x,x为弧度。

cos(x)求余弦x,x为弧度。

tan(x)求正切x,x为弧度。

cot(x)求余切x,即1/(tanx),x为弧度。

asin(x)求反正弦,即sin-1x。

acos(x)求反余弦,即cos-1x。

atan(x)求反正切,即tan-1x。

atan2(x,y)求四象限反正切(x/y),其结果在[-π,π]区间内。

acot(x)求反余切x=四象限反正切(1/x)。

sec(x)求正割x,即1/(cosx)。

csc(x)求余割x,即1/(sinx)。

asec(x)求sec-1x=arccos(1/x)

acsc(x)求csc-1x=arcsin(1/x)。

sinh(x)求双曲正弦x。

cosh(x)求双曲余弦x。

tanh(x)求双曲正切x

coth(x)求双曲余切x,即1/(tanhx)。

atanh(x)求tanh-1x=0.5ln((1+x)/(1-x))。

acoth(x)求coth-1x=0.5ln((x+1)/(x-1))。

■例:

如果键入sinepi=sin(pi),就得到:

sinepi=

1.22466e-16

这个结果并不是精确地为0,因为pi是的近似值,在计算中有舍入误差。

●取整命令和有关命令

round(x)求最接近x的整数。

如果x是一个向量,则适用于所有元素。

fix(x)求0方向最接近x的整数。

即负x向上四舍五入,正x向下四舍五入。

floor(x)求小于或等于x的最接近的整数。

ceil(x)求大于或等于x的最接近的整数。

rem(x,y)求整除x/y的余数。

gcd(x,y)求整数x和y的最大公因子。

●整数函数

mod(a,b)返回a,b相除后的余数。

●最大值和最小值

max(x)返回x中最大的元素值,如果x是复数,则返回max(abs(x))值。

●求和

sum(x)返回向量x所有元素的和。

●复数

在MATLAB中,大多数情况下是允许复数值表达的。

加入变量i和j返回虚数单位,即的值,能用于产生复数。

也可用名字i和j作为变量的名字。

复数变量可以由此产生:

ii=sqrt(-1);

由于空格是分隔元素的,因此在书写复数元素时要慎用空格。

■例:

z=3+4i

(a)一个较复杂的表达式:

w=r*exp(i*theta);comp=z*w;

式中,r和theta是一个已经定义的变量。

(b)向量也可以是复数;

complexvector=[1-i2-2i3-3i]

返回:

complexvector=

1.0000-1.0000i2.0000-2.0000i3.00000-3.0000i

注意,在3与-3i之间的空格使MATLAB读取它们时看作为两个分隔的复数。

●有关复数的函数

real(z)求z的实部。

imag(z)求z的虚部。

abs(z)求z的绝对值,即|z|模。

conj(z)求z的复数共扼,即z。

angle(z)求z的相角,即z=x+iy=reiθ中的θ为弧度。

■例:

令复数z为:

z=1+2i;

(a)z的实部和虚部由下面求出:

realpart=real(z),imagpart=imag(z);

(b)复数共扼由conjugate=conj(z)求出:

conjugate=

1.0000-2.0000i

z的绝对值由absz=abs(z)求出:

absz=

2.2361=sqrt(5)

(c)一个复数的自变量,即复平面中的相角由arg=angle(z)求出:

arg=

1.1071为弧度

●在MATLAB中也有更高级的预定义数学函数。

第2章简单图形

1.在MATLAB中画图形,其数据必须存储在向量或矩阵中。

例如,画出2的乘幂的图形有三步。

首先,创建一个有值的向量。

第二,用这些值对函数求值。

第三,画出向量图形;

例如,输入:

vector=linspace(0,8,100);%使用0~8之间的100个数值使图形更加光滑。

values=2.^vector;%Linspace命令对于创建长向量是非常有效的.

clf;%用命令clf清除图形窗口

plot(vector,values);%结果是一个简单图,其刻度是自动给定的

2.二维图形绘图命令

●plot(x,y)绘制向量y对向量x的曲线。

以x为横坐标,y为纵坐标,按照坐标(xj,yj)的有序排列绘制曲线。

●plot(y)以j为横坐标,yj为纵坐标,绘制(j,yj)的有序集合的图形。

●plot(z)以横轴为实轴,纵轴为虚轴,绘制(real(zk),imag(zk))的有序集合的图形。

这样,复数zk就画在复平面上了。

●plot(...,str)使用字符串str指定的颜色和线型进行绘图。

下表列出了str可以取的值。

●plot(x1,y1,str1,x2,y2,str2,...)用字符串str1指定的颜色和线型绘制y1对x1的图形,用字符串str2指定的颜色和线型绘制y2对x2的图形...。

每组参数值可以采用上述除复数值以外的任何一种形式。

str1,str2...可以省略,此时,MATLAB自动为每条曲线选择颜色和线型。

字符串str可以指定图形的颜色和线型。

表1列出了允许的值和它们代表的意义。

这些参数可以组合起来使用(%可取表中点、线、色各一),例如,‘y+’表示一个黄色的加号,而‘b--’表示一个蓝色的虚线。

如果将要画的是几组数据,但是没有指定线型,系统将会自动按照表1赋予它们从黄到黑各种不同的颜色线型

表1.点类型、线类型与颜色

点类型

线类型

.点

*星号

square正方形

diamond菱形

pentagram五角星形

hexagram六角星形

none无点

oo

++

<顶点指向左边的三角

>顶点指向右边的三角

^正三角

v倒三角

-实线

--虚线

-.点划线

点线

none无线

颜色

g绿色

m品红色

b蓝色

c灰色

w白色

r红色

k黑色

y黄色

在MATLAB中,能很容易地画出点:

x=-pi:

0.05:

pi;

plot(x,sin(x).*cos(x),'o');

plot命令对复数矩阵同样适用。

cleari;%保证i是复数

r=linspace(0,2);%创建向量r

theta=linspace(0,10*pi);%创建角向量θ

[x,y]=pol2cart(theta,r);%将弧度坐标转化成复数向量

z=x+i*y;

plot(z)%对z绘图

3.命令fplot可以绘制出标准的MATLAB和用户自定义的函数图形。

fplot(fcn,lim,str)绘制由字符串fcn指定的函数图形。

这可以是标准函数,也可以是用户在M文件fcn.m中自定义的函数,但不允许是内联函数。

向量lim=[xminxmax]给出绘图区间范围。

该向量也可以包含四个元素,后两个参数用来表示y轴的区间,即lim=[xminxmaxyminymax]。

如果使用字符串str,则可以根据表1来改变图形的线型和颜色。

第3章矩阵运算

MATLAB中的大多数运算可以直接对矩阵应用。

3.1加法和减法

如果矩阵A和B具有相同的维数,那么就可以定义两个矩阵的和A+B和两个矩阵的差A-B。

矩阵A±B,即元素aij±bij。

在MATLAB中,一个m×n矩阵A和一个标量,即一个1×1矩阵s之间也能进行加和减运算。

矩阵A+s得到与A相同的维数,元素为aij+s。

3.2乘法

●乘法的运算符是*

命令C=A*B,元素cij是A的第i行和B的第j列的点积。

矩阵C有与A相同的行数和与B相同的列数。

A=[345;522;123];

B=[123;111];

C=B*A

C=

161418

9810

C=A*B

?

?

?

Errorusing==>*

Innermatrixdimensionsmustagree.因为这种矩阵的乘法没有定义

●命令dot(x,y)得到具有相同元素数量的两个向量x和y的点积,也称为标量积或内积。

如果点积为零,则两个向量是正交的。

3.3除法

在MATLAB中,有两个矩阵除法的符号,左除\和右除/。

如果A是一个非奇异方阵,那么A\B和B/A对应A的逆与B的左乘和右乘,即分别等价于命令inv(A)*B和B*inv(A)。

如果A是一个方阵,那么X=A\B是矩阵方程AX=B的解A-1B,这里的X具有与B相同的维数。

在B=b是一个列向量这样一个特殊情况下,x=A\b是线性系统AX=b的解。

矩阵方程XA=B的解是X=B/A,它等同于(A′\B′)′,即右除可以由左除定义。

这里,撇号′表示转置.

3.4转置和共轭

一个重要的运算是转置和共轭转置,它在MATLAB中用撇´表示。

●如果矩阵A的元素aij是复数,那么矩阵A´在项(i,j)上含有aji(共轭)。

●如果仅希望转置,在撇号之前输入一点.´,A.´表示转置,其结果与conj(A´)相同。

3.5元素操作算术运算

算术运算也可以元素与元素逐次进行。

如果运算是由一点进行的,那么这个运算实行的是元素方式。

对于加法和减法,数组运算和矩阵运算没有差别。

数组运算符是:

+-.*./.\.^

■例:

假设定义如下矩阵:

A=[123;456],B=A

A.*B=

149

162536

3.6元素操作函数

在MATLAB中预定义的数学标准函数是基于对矩阵元素的运算。

3.7关系运算符

MATLAB有用于比较矩阵的六个关系运算符,也可以对矩阵与一个标量进行比较,即矩阵中的每个元素与标量进行比较。

关系运算符如下:

<小于

<=小于等于

>大于

>=大于等于

==等于

~=不等于

关系运算符比较对应的元素,产生一个仅包含1和0的具有相同维数的矩阵。

其元素是:

1比较结果是真

0比较结果是假

在一个表达式中,算术运算符优先级最高,其次是关系运算符,最低级别是逻辑运算符。

令A如上例中假设,A中的元素有大于1的吗?

GreaterThanOne=A>1

ans=

011

111

3.8逻辑运算符

在MATLAB中有四种逻辑运算符:

&与

|或

~非

xor异或

逻辑运算符的运算优先级最低。

如同前一节一样,它也能使一个标量与一个矩阵进行比较。

逻辑运算符是按元素比较的。

3.9建立新矩阵

建立1矩阵使用ones命令,这种矩阵的元素全部都是1。

相应的建立0矩阵使用zeros命令,这种矩阵的元素全部都是0。

单位矩阵的对角线元素全部是1,而其他元素全部是0。

建立单位矩阵使用eye命令。

●1矩阵、零矩阵和单位矩阵

ones(n)建立一个n×n的1矩阵。

ones(m,n,...,p)建立一个m×n×...×p的1矩阵。

zeros(n)建立一个n×n的0矩阵。

zeros(m,n,...,p)建立一个m×n...×p的0矩阵。

eye(n)建立一个n×n的单位矩阵。

注意eye命令只能用来建立二维矩阵。

eye(m,n)建立一个m×n的单位矩阵。

注意eye命令只能用来建立二维矩阵。

eye(size(A))建立一个和矩阵A同样大小的单位矩阵。

3.10向量和子矩阵的生成

在MATLAB中可以使用冒号‘:

’来代表一系列数值。

有时也使用它来定义一个子矩阵。

我们先给出用冒号来定义向量的方法。

1.数字序列

(一)

●i:

k创建从i开始、步长为1、到k结束的数字序列,即i,i+1,i+2,...,k。

如果i>k,MATLAB则返回一个空矩阵,也就是[]。

数字i和k不必是整数,该序列的最后一个数是小于或等于k。

●i:

j:

k创建从i开始、步长为1、到k结束的数字序列,即i,i+j,i+2j,...,k。

对于j=0,则返回一个空矩阵。

数字i、j和k不必是整数,该序列的最后一个数是小于或等于k。

■例

(a)负步长:

vect2=6:

-1:

1,结果为:

654321

(b)实数:

realVect=1.2:

-0.8:

-3.2,结果为:

realVect=

1.20000.4000-0.4000-1.2000-2.0000-2.8000

注意最后一个数值为-2.8。

(c)命令realVect2=0:

pi/4:

pi,结果为:

00.78541.57082.35623.1416

(d)冒号可以用来定义矩阵:

Mat1=[2:

40.1:

1:

2.1;1:

6]

Mat1=

2.00003.00004.00000.10001.10002.1000

1.00002.00003.00004.00005.00006.0000

(e)冒号能够生成函数表,比如sine:

a=0.0;b=2*pi;n=11;x=(a:

(b-a)/(n-1):

b)';%x为列向量

y=sin(x);Ftable=[xy]%y也为列向量

结果为:

Ftable=

00

0.62830.5878

1.25660.9511

1.88500.9511

2.51330.5878

3.14160.0000

3.7699-0.5878

4.3982-0.9511

5.0265-0.9511

5.6549-0.5878

6.2832-0.0000

2.数字序列

(二)

●linspace(a,b)在区间[a,b]上创建一个有100个元素的向量,这100个数把整

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

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2