MATLAB学习笔记.docx
《MATLAB学习笔记.docx》由会员分享,可在线阅读,更多相关《MATLAB学习笔记.docx(8页珍藏版)》请在冰豆网上搜索。
MATLAB学习笔记
Matlab学习笔记
《第一章》
矩阵及基本运算
1、rand相关
rand()随机矩阵,元素在(0,1)之间;
randn()正态分布随机矩阵!
元素大小是不限制的,方差为1
randperm(n)生成1到n之间n个随机数,相当于对n个数进行一个排列;
2、blkdiag(a,b,c...)产生以a,b,c为对角元素的对角矩阵;
3、numel(A)计算矩阵A中元素的个数;
4、compan计算友矩阵,对于计算特征值特征向量很有帮助,eig为计算特征值;5、linspace(a,b,n)将a,b等分为n等分,如果不输入n将视为默认100
6、几个特殊矩阵:
全一矩阵ones;单位矩阵eye;全零阵zeros
7、logspace(a,b):
产生在(10^a,10^b)之间的对数等分向量,同样可以在最后进行限制logspace(a,b,n),eg:
logspace(1,2,6)结果为:
ans=10.000015.848925.118939.810763.0957100.0000,另外还有一个:
y=logspace(a,pi),不太一样:
logspace(1,pi,5):
ans=10.00007.48665.60504.19633.1416,这个主要应该是由于pi是Matlab内部定义的常数。
8、哈达玛(Hadamard)矩阵是由+1和-1元素构成的正交方阵;
9、希尔伯特矩阵Hilbert:
hilb(n),其元素为H(i,j)=1/(i+j-1)。
10、Pascal矩阵,magic魔方矩阵,Hankel方阵,托普利兹矩阵toeplitz,Wilkinson特征值测试阵。
由于自己数学功底不是很强,这些矩阵还不是很理解,以后用到的时候再慢慢了解吧。
11、矩阵的乘法:
A*B:
两个矩阵相乘;A.*B:
矩阵对应元素相乘;dot(A,B):
矩阵的点成;cross(A,B):
矩阵的叉乘;conv:
矩阵的卷积;kron(A,B):
矩阵的张量积,这个相当于用A中每个元素乘以矩阵B,所以这个矩阵还是蛮大的。
12、关于集合的一些函数:
求两个函数的交集c=intersect(a,b),则c=a∩b;
求两个函数的并集c=union(a,b),则c=a∪b;
检测集合中的元素d=ismember(a,S),当a属于集合S的时候返回值d=1;
两个集合的差d=setdiff(a,b),表示d=a-b;
去集合的单值元素unique(a)
异或:
两个矩阵交集的非c=setxor(a,b)。
13、矩阵的除法:
Matlab提供了两种除法运算:
左除(\)和右除(/)。
一般情况下,X=A\B是方程A*X=B的解,而X=B/A是方程X*A=B的解;
14、方阵的行列式:
d=det(A).determinant;
15、矩阵的逆:
Y=inv(X)%求方阵X的逆矩阵。
若X为奇异阵或近似奇异阵,将给出警告信息;当矩阵为奇异矩阵的时候,使用矩阵的伪逆命令:
Y=pinv(X),可以在某种程度上代替矩阵的逆。
则若X是非奇异矩阵,inv(X)=pinv(X);
16、矩阵的迹:
Y=trace(X)%方阵X的对角线元素之和;
17、矩阵和向量的范数:
norm,n=norm(X).默认为二范数,n=norm(X).自己可以设定如:
n=norm(X,1)表示一范数,n=norm(X,inf)表示无穷范数;
18、矩阵的条件数:
d=cond(X).表示X的2-范数的条件数,即X的最大奇异值和最小奇异值的商;
19、矩阵的秩:
d=rank(A);
20、矩阵对角线元素的提取:
v=diag(A),同时,也可以进行设定v=diag(A,k):
k=0,表示抽取主对角线元素;k>0,表示抽取上方对角线元素;k<0,表示抽取下方对角线元素;
21、上下三角阵的提取:
tril(A)提取矩阵A的下三角阵,triu(A)提取矩阵A的上三角阵。
22、矩阵的变维:
通常有两种方法实现:
“:
”和“reshape”命令。
前者主要是针对已知两个矩阵的操作,后者主要是对一个矩阵的操作;矩阵的旋转:
B=rot90(A):
将矩阵A旋转900;矩阵的翻转:
fliplr,矩阵的左右翻转;flipud,矩阵的上下翻转。
23、复制和平铺矩阵:
B=repmat(A,m,n),将矩阵A复制m*n块得到矩阵B;
24、矩阵的比较:
矩阵的比较关系是针对于两个矩阵对应元素的,所以在使用关系运算时,首先应该保证两个矩阵的维数一致或其中一个矩阵为标量。
关系运算是对两个矩阵的对应运算进行比较,若关系满足,则将结果矩阵中该位置元素置为1,否则置0;
25、关于矩阵取整:
floor(A),将A的元素负无穷取整;ceil(A),将A的元素按正无穷方向取整;fix(A),将A的元素按离0近的方向取整;round(A),将A的元素按四舍五入取整。
26、矩阵元素的余数:
rem(A,x);
27、矩阵的逻辑运算:
逻辑与A&B,逻辑或A|B,逻辑非~A,异或xor;
28、符号矩阵sym。
将数值矩阵转化为符号矩阵B=sym(A);另外可以对矩阵进行索引和修改操作,B(m,n)=(l,k);
29、因式分解factor(a)。
注:
因式分解的定义,把一个多项式化为几个最简整式的积的形式。
在MATLAB中建立M文件可以直接使用命令edit;
30、符号矩阵(函数)的展开:
expand命令Eg:
symsx;y=(x+2)^4;z=expand(y)则:
z=x^4+8*x^3+24*x^2+32*x+16;collect:
合并同类项;
31、符号矩阵的简化:
simple或simplify,pretty命令可以使的结果更好看一些;
32、矩阵的分解:
cholesky分解[R,p]=chol(A),如果X为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R'*R=X,若X为正定阵,则p=0,R与上相同;若X非正定,则p为正整数,R是有序的上三角阵;
33、LU分解,又称矩阵的三角分解,[L,U]=lu(A):
它的目的是将一个矩阵分解成一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU;广义上也有[L,U,P]=lu(A),满足LU=PA;
34、QR分解:
[Q,R]=qr(A),将矩阵A分解成一个正交矩阵与一个上三角矩阵的乘积;函数qrdelete:
[Q,R]=qrdelete(Q,R,j):
返回将矩阵A的第j列移去后的新矩阵的qr分解;[Q,R]=qrinsert(Q,R,j,x):
在矩阵A中第j列插入向量x后的新矩阵进行qr分解。
若j大于A的列数,表示在A的最后插入列x;
35、schur分解:
T=schur(A):
产生schur矩阵T,即T的主对角线元素为特征值的三角阵;也可使用广义命令[U,T]=schur(A):
返回正交矩阵U和schur矩阵T,满足A=U*T*U';函数rsf2csf:
将实Schur分解转化成复Schur分解;
36、矩阵的特征值分解:
d=eig(A);或者[V,D]=eig(A)计算A的特征值对角阵D和特征向量V,使AV=VD成立;
37、矩阵的奇异值分解:
[U,S,V]=svd(X),返回一个与X同大小的对角矩阵S,两个酉矩阵U和V,且满足=U*S*V'。
若A为m×n阵,则U为m×m阵,V为n×n阵。
奇异值在S的对角线上,非负且按降序排列;广义奇异值分解:
[U,V,X,C,S]=gsvd(A,B),返回酉矩阵U和V、一个普通方阵X、非负对角矩阵C和S,满足A=U*C*X',B=V*S*X',C'*C+S'*S=I(I为单位矩阵);A和B的列数必须相同,行数可以不同;
38、特征值问题的qz分解。
[AA,BB,Q,Z,V]=qz(A,B),A、B为方阵,产生上三角阵AA和BB,正交矩阵Q、Z或其列变换形式,V为特征向量阵。
且满足:
Q*A*Z=AA和Q*B*Z=BB;
39、海森伯格(Hessenberg)矩阵:
矩阵H的第一子对角线下元素都是0,函数格式H=hess(A);
40、线性方程组的解:
①直接法:
AX=B的解为X=A\B,XA=B的解为X=B/A;②用函数rref进行求解C=[A,B],C为系数矩阵A和常数构成的增广矩阵,当使用rref命令(求解最简行解)之后最后一列就是所求的解;
41、矩阵的LU分解,又称为Gauss分解,将任意方阵分解为下三角阵和上三角阵的乘积。
即A=L*U,L*U*X=B,这样可以提高运算速度,命令为[L,U]=lu(A);Cholesky分解:
若A为对称正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其转置的乘积,即:
A=R*R’,其中R为上三角阵,命令为R=chol(A);对于任何长方矩阵A,都可以进行QR分解,其中Q为正交矩阵,R为上三角矩阵的初等变换形式,即:
A=QR;
42、null求解零空间,即满足AX=0,实际上是求解出解空间的一组基(基础解系),注:
formatrat指定有理式格式输出,B=null(A,’r’);
43、让矩阵输出的结果更漂亮一些:
pretty(X),在此举一个综合一点的例子,求A*X=0的通解A=[1221;21-2-2;1-1-4-3];formatrat%指定有理数格式输出;B=null(A,’r’);symsk1k2%定义符号变量;X=k1*B(:
1)+k2*B(:
2);pretty(X);
44、求解非齐次线性方程组的通解,首先需要先判断方程组是否有解,若有解,再去求通解。
因此,步骤为:
第一步:
判断AX=b是否有解,(注:
判断系数矩阵A的秩是否和其增广矩阵的秩是否相等,若相等,方程有解R(A)=R(B))若有解则进行第二步;第二步:
求AX=b的一个特解;第三步:
求AX=0的通解;第四步:
AX=b的通解为AX=0的通解加上AX=b的一个特解;
45、平衡矩阵B,[T,B]=balance(A),满足B=T-1AT;
46、复对角矩阵转化为实对角矩阵:
cdf2rdf,将复对角阵d变为实对角阵D,在对角线上,用2×2实数块代替共轭复数对;
47、正交基orth,B=orth(A):
将矩阵A正交规范化;B*B’=eye(rank(A));
48、求行阶梯矩阵及向量组的基:
[R,jb]=rref(A),R表示将矩阵A化成行最简形,jb是一个向量,其含义为:
r=length(jb)为A的秩;A(:
jb)为A的列向量基;jb中元素表示基向量所在的列;
49、稀疏矩阵的创建S=sparse(A);将矩阵A转化为稀疏矩阵形式,即由A的非零元素和下标构成稀疏矩阵S,sparse是用来产生稀疏矩阵的,详细一点的S=sparse(i,j,s,m,n),利用向量i,j,s来产生一个m*n的矩阵,产生方法为
S(i(k),j(k))=s(k);full函数,将稀疏矩阵转换为满矩阵(相当于sparse函数的逆)A=full(S);另外,find命令用于查找稀疏矩阵中的非零元素,[i,j,v]=find(X):
检索X中非零元素的行标i和列标j以及对应的元素值v;
50、基本稀疏矩阵,带状(对角)稀疏矩阵:
[B,d]=spdiags(A),从矩阵A中提取所有非零对角元素,这些元素保存在矩阵B中,向量d表示非零元素的对角线位置;单位稀疏矩阵:
speye(m,n),生成m*n的单位对角矩阵;稀疏均匀分布随即矩阵R=sprand(S):
生成与S具有相同稀疏结构的均匀分布随机矩阵;稀疏正态分布随机矩阵R=sprandn(S);稀疏对称随机矩阵sprandsym,R=sprandsym(S),生成稀疏对称随机矩阵,其下三角和对角线与S具有相同的结构,其元素服从均值为0、方差为1的标准正态分布;
51、稀疏矩阵的运算:
①稀疏矩阵非零元素的个数n=nnz(x);②稀疏矩阵的非零元素s=nonzeros(A),返回矩阵A中非零元素按列顺序构成的列向量;③稀疏矩阵非零元素的内存分配n=nzmax(S),返回非零元素分配的内存总数n;④、稀疏矩阵的存贮空间:
S=spalloc(m,n,nzmax),产生一个m×n阶只有nzmax个非零元素的稀疏矩阵,这样可以有效减少存贮空间和提高运算速度;⑤稀疏矩阵的非零元素应用:
f=spfun('function',S),用S中非零元素对函数'function'求值,如果'function'不是对稀疏矩阵定义的,同样可以求值;⑥:
把稀疏矩阵的非零元素全换为1,R=spones(S),将稀疏矩阵S中的非零元素全换为1;
52、画稀疏矩阵非零元素的分布图形:
spy函数,具体spy(S,'LineSpec',markersize)其中LineSpec指定绘图标记和颜色,markersize为整数,指定点阵大小;
53、矩阵变换:
列近似最小度排序A=colamd(S)返回稀疏矩阵S的列的近似最小度排序向量A;稀疏对称最小度排列,p=symmmd(S),返回S的对称最小度排列向量p,S为对称正定矩阵;
54、稀疏矩阵的近似欧几里得范数和条件数:
c=condest(A),计算方阵A的1-范数中条件数的下界值c;nrm=normest(S),返回矩阵S的2-范数的估计值,相对误差为10-6;稀疏矩阵的不完全LU分解:
[L,U]=luinc(X,'0');X为稀疏方阵;L为下三角矩阵的置换形式;U为上三角矩阵;'0'是一种分解标准。
《第二章》
数值计算与数据分析
55、基本数学函数:
正弦函数Y=sin(X),双曲正弦函数Y=sinh(X),反正弦函数Y=asin(X),反双曲正弦函数Y=asinh(X);余弦函数Y=cos(X),双曲余弦函数Y=cosh(X),反余弦函数Y=cos(X),反双曲余弦函数Y=acosh(X);正切函数Y=tan(X),双曲正切函数Y=谈话(X),反正切函数Y=atan(X),反双曲正切函数Y=atanh(X);余切函数Y=cot(X),双曲余切函数Y=coth(X),反余切函数Y=acot(X),反双曲余切函数Y=acoth(X),另外还有正割sec(1/cos)和余割csc(1/sin),PS:
四象限的反正切函数P=atan2(Y,X),返回一与参量X和Y同型的、与X和Y元素的实数部分对应的、元素对元素的四象限的反正切函数阵列P,其中X和Y的虚数部分将忽略。
阵列P中的元素分布在闭区间[-pi,pi]上。
特定的象限将取决于sign(Y)与sign(X);
56、取余rem或mod,p=rem(X,Y);exp:
以e为底的指数函数y=exp(x),expm(x):
求矩阵的以e为底的指数函数,Y=expm(X);log以e为底的对数,y=log(x),log2(x)、long10(X)分别是以2和10为底的对数。
57、sort命令:
把输入参量中的元素按从小到大的方向重新排列;
58、abs:
数值的绝对值或复数的幅值;复数的共轭conj,复数的虚部imag,复数的实部real,复数的相角:
P=angle(Z);
59、用实数和虚数部分创建复数:
c=complex(a,b);带符号的除法余数mod,M=mod(X,Y),若运算数x与y有相同的符号,则mod(X,Y)等于rem(X,Y)。
总之,对于整数x,y,有:
mod(-x,y)=rem(-x,y)+y;
60、二项式系数或所有的组合数,C=nchoosek(n,k)参量n,k为非负整数,返回n!
/((n-k)!
k!
),即一次从n个物体中取出k个的组合数,相当于
=n!
/((n-k)!
k!
)命令,另外阶乘的函数为factorial;
61、yi=interp1(x,Y,xi,method),用指定的算法计算插值,主要包括‘nearest’最近邻点插值,’linear’线性插值,‘spline’三次样条函数插值,‘pchip’分段三次Hermite插值,‘cubic’:
双三次插值;
62、rat与rats:
有理分式近似。
rat对于有连续出现的小数的数值,将会用有理式近似表示它们,函数rats调用函数rat,且返回字符串。
rats=formatrat
Ps:
inline函数,matlab中定义的一个内置函数,可以直接内嵌在命令行中;
63、常微分方程数值解:
ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb
《第三章》
符号运算
64、定义符号变量:
symsa,b,c,d;
65、基本运算:
合并同类项collect,列空间的基colspace,B=colspace(A)返回矩阵B,其列向量形成由矩阵A的列向量形成的空间的坐标基,其中A可以是符号或数值矩阵。
而size(colspace(A),2)等于rank(A)。
即由A生成的空间维数等于A的秩;compose,复合函数的计算,compose(f,g):
返回复合函数f[g(y)],其中f=f(x),g=g(y);
66、符号复数的共轭conj(X),real(Z)返回符号复数的实数部分,real(Z)返回符号复数的虚部部分;Y=cosint(X),返回余弦函数的整函数,Ps:
γ:
欧拉常数,可以通过vpa(‘eulergamma’)获得;
67、digits:
设置变量的精度;R=double(S),将符号对象S转换为数值对象R;expand,R=expand(S)对符号表达式S中每个因式的乘积进行展开计算。
该命令通常用于计算多项式函数、三角函数、指数函数与对数函数等表达式的展开式;符号因式分解:
factor(X),参量x可以是正整数、符号表达式阵列或符号整数阵列。
若X为一正整数,则factor(X)返回X的质数分解式。
若x为多项式或整数矩阵,则factor(X)分解矩阵的每一元素。
若整数阵列中有一元素位数超过16位,用户必须用命令sym生成该元素。
68、simple:
搜索符号表达式的最简形式,r=simple(S),该命令试图找出符号表达式S的代数上的简单形式,显示任意的能使表达式S长度变短的表达式,且返回其中最短的一个。
若S为一矩阵,则结果为整个矩阵的最短形式,而非是每一个元素的最简形式。
若没有输出参量r,则该命令将显示所有可能使用的算法与表达式,同时返回最短的一个;
69、符号矩阵的维数:
size,d=size(A)若A为m*n阶的符号矩阵,则输出结果d=[m,n];代数方程的符号解析解solve,g=solve(eq);
70、特征多项式:
p=poly(A);poly2sym将多项式系数向量转化为带符号变量的多项式,记得pretty可以对结果进行简化得到我们熟知的形式;
71、r=findsym(S):
从一符号表达式中或矩阵中找出符号变量;g=finverse(f),返回函数f的反函数。
其中f为单值的一元数学函数,如f=f(x)。
若f的反函数存在,设为g,则有g[f(x)]=x;
72、horner:
套嵌形式的多项式表达式;r=symsum(S,a,b),符号表达式求和,首先定义符号函数,然后对从a项到b项求和操作;广义超几何函数函数hypergeom;
73、limit极限,limit(F):
用命令findsym(F)确定F中的自变量,设为变量x,再计算F的极限值,当x→0时;limit(F,x,a),计算符号表达式F=F(x)的极限值,当x→a时;
74、diff(S,'v',n):
对表达式S中指定的符号变量v计算S的n阶导数;
75、R=int(S,v,a,b):
对表达式s中指定的符号变量v计算从a到b的定积分;dslove,常微分方程的符号解,r=dsolve('eq1,eq2,…','cond1,cond2,…','v'),ps:
若没有指定变量v,则缺省变量为t;
76、画符号函数的等高线图,ezcontour(f),画出二元符号函数f=f(x,y)的等高线图,函数f将被显示于缺省的平面区域[-2πminn的缺省值为60;用不同颜色填充的等高线图ezcontourf(f);
77、在matlab中特别在使用句柄函数@的时候,记得在前面加上“.”,代表元素运算,当不加点的时候表示矩阵或者数组相乘,eg:
A.*B代表矩阵A、B对应元素相乘而A*B则代表A和B矩阵的相乘;
78、符号函数的三维网格图ezmesh(f),画二元数学符号函数f=f(x,y)的网格图,ezmeshc,同时画出曲面网格图与等高线图;
79、画符号函数的图形ezplot(f),对于显式函数f=f(x),在缺省的范围[-π80、三维参量曲线图,ezplot3(x,y,z),在缺省的范围081、画极坐标图形,格式ezpolar(f),在缺省的范围0且将函数关系式显示于图形下方。
ezpolar(f,[a,b])在指定的范围a且将函数关系式显示于图形下方;
82、三维带颜色的曲面图,ezsurf(f),画出二元数学符号函数z=f(x,y)的曲面图形,同样的使用ezsurfc命令可同时画出曲面图与等高线图;
83、Fourier积分变换,格式F=fourier(f),对符号单值函数f中的缺省变量x(由命令findsym确定)计算Fourier变换形式。
缺省的输出结果F是变量w的函数
;运行了一个例子:
symsxwuv
f=sin(x)*exp(-x^2);F1=fourier(f),结果却并不是期望得到的:
transform:
:
fourier(sin(x)/exp(x^2),x,-w),这时候使用命令simplify(fourier(sin(x)/exp(x^2),x,-w))才可以得到正确的结果。
84、
85、