>>x=3:
-1:
0
x=
3210
2)使用linspace和logspace函数生成向量
Linspace是用来生成线性等分向量,直接给出元素的个数从而得出各个元素的值
linspace(a,b,n)3个参数分别表示开始值,结束值和元素个数,生成a,b之间线性分布的n个元素的行向量,n如果省略则默认值是100.
logspace用来生成对数等分向量logspace(a,b,n)生成从
到
之间按对数等分的n个元素的行向量,n如果省略则默认50
>>x1=linspace(0,2*pi,5)
x1=
0
>>x2=logspace(0,2,3)
x2=
110100
3)由函数产生特殊矩阵
函数名
功能
例子
输入
结果
Zeros(m,n)
产生m*n的全0矩阵
Zeros(2,3)
000
000
Ones(m,n)
产生m*n的全1矩阵
ones(2,3)
111
111
rand(m,n)
产生均匀分布的随机矩阵,
元素取值范围为~
rand(2,3)
randn(m,n)
产生正态分布的随机矩阵
randn(2,3)
Magic(N)
产生N阶魔方矩阵(矩阵
的行、列和对角线上的
元素的和相等)
Magic(3)
816
357
492
eye(m,n)
产生m*n的单位矩阵
Eye(3)
100
010
001
true(m,n)
false(m,n)
产生m*n的逻辑矩阵,
全为ture
产生m*n的逻辑矩阵,
全为false
True(3)
111
111
111
当zeros,ones,rand,randn,eye函数中只有一个参数n时,则为n*n的方阵
>>t=true(3)
t=
111
111
111
>>t(1:
2,3)=false(2,1)%1,2行的第2列改为false
t=
110
110
111
8、矩阵的下标
1)全下标方式
A=[1,2;3,4;5,6]A(1,2)=2A(1,2)=7A=[1,7;3,4;5,6]
2)单下标方式:
把矩阵的所有列按照先左后右的次序连接成“一维长列”,然后对元素位置进行编号,m*n矩阵的单下标s=(j-1)/8m+i
9、子矩阵块的产生方式
1)全下标方式:
(以3*3矩阵为例)
a([1,3],[2,3])表示取行数为1,3,列数为2,3的元素构成子矩阵
a(1:
3,2:
3)取行数1~3,列数2~3的元素构成子矩阵
a(:
;3)取所有的行数,列数为3的元素构成子矩阵
a=(1:
3,end)表示取行数1~3,列数为3的元素构成矩阵,end表示某一位数中的最大值,即3
2)用单下标方式:
a([1,3;2,6])表示取单下标为1,3,2,6的元素构成子矩阵
3)逻辑矩阵:
a(l1,l2)表示子矩阵时,l1,l2为逻辑向量,l1,l2的元素为0则不取该位置元素,反之则取该位置元素。
>>a=[1,2,3;4,5,6;7,8,9];
>>l1=logical([101]);
>>l2=logical([110]);
>>a(l1,l2)
ans=
12
78
10、矩阵的赋值:
全下标方式,单下标方式,全元素方式
eg:
全元素方式:
>>a=[12;34;56]
a=
12
34
56
>>b=[123;456]
b=
123
456
>>a(:
)=b%按单下标方式给a赋值
a=
15
43
26
11、矩阵元素的删除操作:
赋值为空矩阵[]
A(:
3)删除1列元素;a
(1)=[],按单下标方式删除1个元素,则矩阵变为行向量
12、生成大矩阵[a;a]
13、矩阵和数组运算a=[123;456;789]
函数名
功能
det(X)
计算方阵行列式
rank(X)
求矩阵的秩,得出行列式不为0的最大方阵边长
inv(X)
求矩阵的逆,当方阵X的dit(X)不等于0,逆阵才存在,相乘为单位矩阵
diag(X)
产生X矩阵的对角阵
13、矩阵的翻转(常用矩阵翻转的函数功能)a=[120;040;569]
函数名
功能
例子
输入
结果
triu(X)
产生X矩阵的上三角矩阵,其余元素补0
triu(a)
120
040
009
tril(X)
产生X矩阵的下三角矩阵,其余元素补0
tril(a)
100
040
569
flipud(X)
使矩阵X沿水平轴上下翻转
flipud(a)
569
040
120
fliplr(X)
使矩阵X沿垂直轴左右翻转
fliplr(a)
021
040
965
15、矩阵和数组的算术运算
X=A\B表示方程A*X=B的解
X=A/B表示方程X*A=B的解
数组的乘法为.*除法运算有.\和./,表示数组相应元素相乘除
矩阵乘方A^B,数组乘方A.^B
16、矩阵和数组的转置
A’表示矩阵A的转置,若A为复数矩阵,则为共轭转置
A.’表示数组A的转置,如果数组A为复数数组,则不是共轭转置
17、数组的基本函数
函数名
含义
函数名
含义
abs
绝对值或者复数模
Mod
模除求余
Sqrt
平方根
exp
自然指数
Real
实部
Log
自然对数
Imag
虚部
Log10
以10为底的对数
conj
复数共轭
18、矩阵和数组运算的对比表(52页)
19、关系操作和逻辑操作
1)MATLAB常用的关系操作符有<,<=,>,>=,==,~=(不等于)
①如果用来比较的2个变量都是标量,则结果为真
(1)或假(0)
②如果用来比较的都是数组,则大小必须相同,结果也是同样大小的数组,数组的元素为0或1
③如果用来比较的是1个数组和1个标量,则把数组的每个元素分别于标量比较,结果为同样大小相同的数组,数组的元素为0或1
④关系操作符<,<=,>,>=仅对参加比较的变量的实部进行比较,而,==,~=可同时对实部和虚部进行比较
2)逻辑运算与&或|非~异或xor
①非0元素表示真
(1),0元素表示假(0),逻辑运算的结果为0或1
②如果用来逻辑运算的2个变量都是标量,则结果为0、1的标量
③如果用来逻辑运算的2个变量都是数组,则必须大小相同,结果为同样大小相同的数组
④先决与&&,先决或||
20、常用的关系逻辑函数(54页)
21、在MATLAB中各种运算符的优先级:
'(矩阵转置)、^(矩阵幂)和.'(数组转置)、.^(数组幂)
~(逻辑非)
*(乘)、/(左除)、\(右除)和.*(点乘)、./(点左除)、.\(点右除)
+、-(加减)
:
(冒号)
<、<=、>、>=、~=
&(逻辑与)
|(逻辑或)
&&(先决与)
||(先决或)
22、矩阵的大小size(a)
返回行数或列数的最大值length(p)等价于max(size(p))
23、多项式
1)多项式p1(x)=x3+21x2+20x可以表示为:
p1=[121200]%常数项为0,按幂的降序排列。
最后一个元素一定是表示常数项,
如果无常数项,则应该令该元素为0
2)多项式求值polyval(p,s)计算多项式在给定变量时的值。
说明:
p为多项式,s为给定矩阵。
p1=[121200];
polyval(p1,2)%计算x=2时多项式的值
x=0:
:
3;
polyval(p1,x)%计算x为向量时多项式的值
3)多项式求根r=roots(p)p为多项式,r为计算的多项式的根,以列向量形式保存
P=poly(r)根据多项式的根计算多项式的系数
4)特征多项式P=poly(s)s必须是方阵,p为特征多项式
5)部分分式展开[r,p,k]=residue(b,a)
6)多项式的乘法和除法
多项式乘法p=conv(pl,p2),p是多项式p1和p2的乘积多项式。
多项式除法,[q,r]=deconv(pl,p2):
多项式p1被p2除的商为多项式q,余子式是r
7)多项式的微分和积分
p=polyder(p1):
多项式p1的微分为多项式p。
没有专门积分函数,可以用[p./length(p):
-1:
1,k]的方法来完成积分,k为常数
例:
求多项式的微分和积分。
p1=[121200]
p4=polyder(p1)%多项式微分
s=length(p4):
-1:
1
p1=[p4./s,0]%多项式积分,常数k=0
8)多项式的拟合和插值
插值运算:
根据数据点的规律,找到一个多项式表达式可以连接两个点,插并得出相邻数据点之间的数值。
①一维插值
yi=interp1(x,y,xi,’method’):
一维插值是指对一个自变量的插值,interp1函数是用来进行一维插值的。
说明:
x、y为行向量;xi是插值范围内任意点的x坐标,yi则是插值运算后的对应y坐标;method是插值函数的类型,“linear”为线性插值(默认),“nearest”为用最接近的相邻点插值,“spline”为三次样条插值,“cubic”为三次插值。
24、数据分析
1)原则
①如果输入的是向量,则按整个向量进行运算
②如果输入的是矩阵,则按列进行运算
2)MATLAB数据统计分析函数(75页)注意max(x)和max(x(:
))的差别
3)常用的差分和积分函数(76页)
4)卷积和快速傅里叶变换
conv(x,y)计算向量的卷积(若x是输入信号,y是线性系统的脉冲过渡函数,则X,Y的卷积为系统的输出信号)
[q,r]=deconv(x,y)解卷积运算x=conv(y,q)+r
MATLAB软件的序列下标从1开始而不是0
X=fft(x,N)对离散序列进行离散傅里叶变换
X=ifft(x,N)对离散序列进行离散傅里叶逆变换
x可以是向量,矩阵,多维数组,N为输入变量x的序列长度,可省略。
如果x的长度小于N,则会自动补零;如果x的长度大于N,则会自动截断;当N取2的整数幂时,傅立叶变换的计算速度最快。
一般情况下,fft求出的函数为复数,可用abs及angle分别求其幅值和相位。
第3章MATLAB符号计算
1、创建符号常量sym(‘常量’)
sym(常量,参数)%把常量按某种格式转换为符号常量
参数可选为‘d’(十进制)、‘f’(浮点)、‘e’(带有机器浮点误差的有理值)或‘r’(最接近的有理数值)四种格式,也可省略(默认为'r')。
2、MATLAB的数学计算:
包括数值计算和符号计算
数值计算:
不允许使用未赋值的变量
符号计算:
可以使用未赋值的符号变量进行运算
3、创建数值常量和符号常量
>>a=sym('sin
(2)')%创建符号常量,注意和>>a=sin
(2)的区别
a=sin
(2)
>>a1=2*sqrt(5)+pi%创建数值常量
a1=
>>a2=sym('2*sqrt(5)+pi')%创建符号常量
a2=2*sqrt(5)+pi
>>a4=sym(2*sqrt(5)+pi,'d')%按最接近的十进制浮点数表示符号常量
a4=
>>a5='2*sqrt(5)+pi'%字符串常量,注意和第3条命令的执行结果比较
a5=2*sqrt(5)+pi
4、创建符号变量sym(‘变量’,参数)%把变量定义位符号对象
参数用来限定符号变量的数学特性:
‘positive’表示为正、实符号变量,‘real’为实符号变量,‘unreal’为非实符号变量
5、创建符号表达式sym(‘表达式’)
6、创建多个符号变量和符号表达式
Syms(‘arg1’,’arg2’,…,参数)
Symsarg2arg2…,参数
7、创建符号矩阵
>>A=sym('[a,b;c,d]')>>symsabcd
A=>>A=[a,b;c,d]
[a,b]A=
[c,d][a,b]
[c,d]
8、符号表达式的代数运算
1)算术和关系运算符
(1)算术运算符
“+”,“-”,“*”,“\”,“/”,“^”分别实现符号矩阵的运算。
“.*”,“./”,“.\”,“.^”分别实现符号数组的运算。
“′”,“.′”分别实现符号矩阵的共轭转置、非共轭转置。
(2)关系运算符
在符号对象的比较中,没有“大于”、“大于等于”、“小于”、“小于等于”的概念,而只有是否“等于”的概念(“==”、“~=”),为真时,用1表示;为假时,用0表示
2)、函数运算
(1)三角(反三角)函数和双曲函数
sin、cos、tan
asin、acos、atan
sinh、cosh、tanh
(2)指数和对数函数
sqrt、exp、expm
自然对数log(表示ln),无log2和log10
(3)复数函数
conj、real、imag、abs
无angle函数
(4)矩阵代数命令
diag,triu,tril,inv,det,rank,poly,eig
9、符号表达式中自由变量的确定(重要)
1)小写字母i,j不能作为自由变量
2)符号表达式中如果有多个符号变量,则按照:
首先选择x作为自由变量;如果没有x则选择在字母顺序中最接近x的字符变量;如果与x相等距离,则在x后面的优先
3)大写字母比所有小写字母都靠后
10、确定自由符号变量:
symvar(EXPR)
自动确定符号表达式中的自由符号变量findsym
EXPR可以是符号表达式或符号矩阵;n为按顺序得出符号变量的个数。
当n省略时,则不按顺序得出EXPR中所有的符号变量。
>>f=sym('5*v^u-3*w+Y+z')
>>findsym(f)%得出所有的符号变量,不按次序
ans=Y,u,v,w,z
>>findsym(f,5)%得出所有的符号变量,不按次序
ans=w,z,v,u,Y
11、符号表达式的化简(91页)
1)多项式形式
2)因式形式
3)嵌套形式
多项式化简函数表pretty、collect、expand、horner、factor
函数名
变换前
变换后
备注
pretty
x^3-6*x^2+11*x*-6
32
x-6x+11x-6
给出排版形式的输出结果
collect
(x-1)*(x-2)*(x-3)
x^3-6*x^2+11*x*-6
表示为合并同类项多项式,当有多个符号变量,可指定按某个符号变量来合并,否则按默认的自由变量进行
expand
(x-1)*(x-2)*(x-3)
x^3-6*x^2+11*x*-6
表示为多项式形式,多项式展开形式
horner
x^3-6*x^2+11*x*-6
x*(11*y+x*(x-6))-6
表示为嵌套形式
factor
x^3-6*x^2+11*x*-6
(x-3)*(x-1)*(x-2)
表示为因式连乘的形式
collect(f1,’y’)按y变量来变换
simplify函数:
化简函数,对三角函数、对数函数、幂函数等特别有效
>>y=sym('cos(x)^2-sin(x)^2')
y=
cos(x)^2-sin(x)^2
>>simplify(y)
ans=
cos(2*x)
simple函数:
寻求包含最少数目字符的表达式简化形式
12、符号极限
[记住每一个函数表示什么]
>>f=sym('1/x')
f=
1/x
>>limit(f)
ans=
NaN%当左右极限不相等时,表达式的极限不存在,为NaN
>>limit(f,'x',0,'left')
ans=
-Inf
用极限方法也可以求函数的倒数
13、符号微分
diff(f)%求f对默认自由变量的一阶微分
diff(f,t)%求f对指定符号变量t的一阶微分
diff(f,n)%求f对默认自由变量的n阶微分
diff(f,t,n)%求f对指定符号变量t的n阶微分
eg:
>>f=sym('a*x^2+b*x+c')
f=
a*x^2+b*x+c
>>diff(f)%对默认自由变量x求一阶微分
ans=
b+2*a*x
>>diff(f,'a')%对符号变量a求一阶微分
ans=
x^2
>>diff(f,'x',2)%对符号变量x求二阶微分
ans=
2*a
>>diff(f,3)%对默认自由变量x求三阶微分
ans=
0
diff用于符号矩阵时,其结果是对矩阵的每一个元素进行微分计算
eg:
symstxy
g=[2*yt^2;t*sin(y)exp(x)]%创建符号矩阵
diff(g)%对默认自由变量求一阶微分
diff(g,'t')%对符号变量t求一阶微分
diff(g,'y')
diff(g,2)%对默认自由变量求二阶微分
可以使用diff计算向量间元素的差值
eg:
>>x1=0:
:
2;
>>y1=sin(x1)
y1=
0
>>diff(y1)
ans=
计算出的差值比原来的向量少一列
14、符号积分
int(f,’t’)%求符号变量t的不定积分
int(f,’t’,a,b)%求符号变量t的积分
int(f,’t’,’m’,’n’)%求符号变量t的积分
说明:
t为符号变量,当t省略则为默认自由变量;a和b为数值,[a,b]为积分区间;m和n为符号对象,[m,n]为积分区间;与符号微分相比,符号积分复杂得多。
因为函数的积分有时可能不存在,即使存在,也可能限于很多条件,MATLAB无法顺利得出。
当MATLAB不能找到积分时,将给出警告提示。
15、符号方程的求解
1)代数方程
solve(‘eq’,’v’)%求方程关于指定变量的解
solve(‘eq1’,’eq2’,’v1’,’v2’,…)%求方程组关于指定变量的解
说明:
eq可以是含等号的符号表达式的方程,也可以是不含等号的符号表达式,但所指的仍是令eq=0的方程;当参数v省略时,为方程中默认的自由变量;其输出结果为结构数组类型。
>>f1=sym('a*x^2+b*x+c')%无等号
f1=
a*x^2+b*x+c
>>solve(f1)
ans=
-(b+(b^2-4*a*c)^(1/2))/(2*a)
-(b-(b^2-4*a*c)^(1/2))/(2*a)
>>f2=sym('sin(x)')
f2=
sin(x)
>>solve(f2,'x')
ans=
0%当sinx=0有多个解时,只能得出0附近的有限几个解
计算三元非线性方程组
的解
>>eq1=sym('x^2+2*x+1');
>