MATLAB优化Word文档下载推荐.docx
- 文档编号:8204389
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:36
- 大小:169.31KB
MATLAB优化Word文档下载推荐.docx
《MATLAB优化Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MATLAB优化Word文档下载推荐.docx(36页珍藏版)》请在冰点文库上搜索。
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
456];
B=[111213;
141516];
可以很容易地构造一个三维矩阵C:
C(:
,:
,1)=A;
,2)=B;
给出:
c(:
:
1)=
2)=
111213
141516
●显示一个变量的值。
输入vrow,MATLAB显示:
●输入以下命令,可以得到变量列表:
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=
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
++
x×
<
顶点指向左边的三角
>
顶点指向右边的三角
^正三角
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元素操作算术运算
算术运算也可以元素与元素逐次进行。
如果运算是由一点进行的,那么这个运算实行的是元素方式。
对于加法和减法,数组运算和矩阵运算没有差别。
数组运算符是:
+-.*./.\.^
假设定义如下矩阵:
456],B=A
A.*B=
149
162536
3.6元素操作函数
在MATLAB中预定义的数学标准函数是基于对矩阵元素的运算。
3.7关系运算符
MATLAB有用于比较矩阵的六个关系运算符,也可以对矩阵与一个标量进行比较,即矩阵中的每个元素与标量进行比较。
关系运算符如下:
小于
=小于等于
大于
=大于等于
==等于
~=不等于
关系运算符比较对应的元素,产生一个仅包含1和0的具有相同维数的矩阵。
其元素是:
1比较结果是真
0比较结果是假
在一个表达式中,算术运算符优先级最高,其次是关系运算符,最低级别是逻辑运算符。
令A如上例中假设,A中的元素有大于1的吗?
GreaterThanOne=A>
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×
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。
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个数把整
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 优化