
matlab 心得体会
这是我在学习的过程中的一些技巧,或许对你有帮助,可能字数不你能满足你的要求,但是绝对是精华。
1,如果你要是不是计算机转业的,只是为了方便自己的工作或学习,那么你没有必要把matlab教程全部学会,只需要学你需要的那部分即可,比如,绘图,矩阵运算,等等,根据你个人的需要而定,但是基本命令、数据类型、基本的程序结构(条件语句,循环语句,嵌套)、文件的IO是必须看的,因为任何一个程序都需要这几个基本的块。
2,你最好找一个熟悉编程的人来辅助你的学习,这就包括很多编程的技巧问题,程序的结构设计问题,对于程序的运行效率非常有帮助。
有的时候,你编出来的程序,能够运行,但是耗时太长,也就是说你的程序没有错,但是不适合实际。
或者说,对于规模小的问题能够解决,但是规模大一点的问题就需要很长很长的时间,这就需要对程序的结构和算法问题进行改进(亲身体会,编完一个程序,小的例子可以运行出结果,但是大例子需要很长时间,所以必须要改进一下)。
3,你需要找一本matlab的函数工具词典,就像汉语词典一样,你要尽量多的熟悉matlab自带的函数,及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数(如vb中,大部分的函数都需要自己编)。
这一点对你的程序非常有帮助,可以使你的程序简单,运行效率高,可以节省很多时间(亲身体会)。
切记4,你把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充(这一条是别人教我的,很管用),编程是一点一点积累的,所以你要需做一些随手笔记什么的。
5,编程问题最头疼的不是编程序,而是调程序,所以在你的程序编完之后,一定要进行验证其正确性,你要尽量多的设想你的问题的复杂性,当然,要一步一步复杂,这样才能保证你的程序的适用性很强。
随笔写了这么多,可能不全,希望对你有帮助
有哪位高人总结了matlab中的矩阵的基本运算命令
还有有关极限、积分的
1.1 矩阵的表示1.2 矩阵运算1.2.14 特殊运算1.矩阵对角线元素的抽取函数 diag格式 X = diag(v,k) %以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。
X = diag(v) %以v为主对角线元素,其余元素为0构成X。
v = diag(X,k) %抽取X的第k条对角线元素构成向量v。
k=0:抽取主对角线元素;k>0:抽取上方第k条对角线元素;k<0抽取下方第k条对角线元素。
v = diag(X) %抽取主对角线元素构成向量v。
2.上三角阵和下三角阵的抽取函数 tril %取下三角部分格式 L = tril(X) %抽取X的主对角线的下三角部分构成矩阵LL = tril(X,k) %抽取X的第k条对角线的下三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。
函数 triu %取上三角部分格式 U = triu(X) %抽取X的主对角线的上三角部分构成矩阵UU = triu(X,k) %抽取X的第k条对角线的上三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。
3.矩阵的变维矩阵的变维有两种方法,即用“:”和函数“reshape”,前者主要针对2个已知维数矩阵之间的变维操作;而后者是对于一个矩阵的操作。
(1)“:”变维(2)Reshape函数变维格式 B = reshape(A,m,n) %返回以矩阵A的元素构成的m×n矩阵BB = reshape(A,m,n,p,…) %将矩阵A变维为m×n×p×…B = reshape(A,[m n p…]) %同上B = reshape(A,siz) %由siz决定变维的大小,元素个数与A中元素个数相同。
(5)复制和平铺矩阵函数 repmat格式 B = repmat(A,m,n) %将矩阵A复制m×n块,即B由m×n块A平铺而成。
B = repmat(A,[m n]) %与上面一致B = repmat(A,[m n p…]) %B由m×n×p×…个A块平铺而成repmat(A,m,n) %当A是一个数a时,该命令产生一个全由a组成的m×n矩阵。
1.3 矩阵分解1.3.1 Cholesky分解函数 chol格式 R = chol(X) %如果X为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R'*R = X;若X非正定,则产生错误信息。
[R,p] = chol(X) %不产生任何错误信息,若X为正定阵,则p=0,R与上相同;若X非正定,则p为正整数,R是有序的上三角阵。
1.3.2 LU分解矩阵的三角分解又称LU分解,它的目的是将一个矩阵分解成一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU。
函数 lu格式 [L,U] = lu(X) %U为上三角阵,L为下三角阵或其变换形式,满足LU=X。
[L,U,P] = lu(X) %U为上三角阵,L为下三角阵,P为单位矩阵的行变换矩阵,满足LU=PX。
1.3.3 QR分解将矩阵A分解成一个正交矩阵与一个上三角矩阵的乘积。
函数 qr格式 [Q,R] = qr(A) %求得正交矩阵Q和上三角阵R,Q和R满足A=QR。
[Q,R,E] = qr(A) %求得正交矩阵Q和上三角阵R,E为单位矩阵的变换形式,R的对角线元素按大小降序排列,满足AE=QR。
[Q,R] = qr(A,0) %产生矩阵A的“经济大小”分解[Q,R,E] = qr(A,0) %E的作用是使得R的对角线元素降序,且Q*R=A(:, E)。
R = qr(A) %稀疏矩阵A的分解,只产生一个上三角阵R,满足R'*R = A'*A,这种方法计算A'*A时减少了内在数字信息的损耗。
[C,R] = qr(A,b) %用于稀疏最小二乘问题:minimize||Ax-b||的两步解:[C,R] = qr(A,b),x = R\\\\c。
R = qr(A,0) %针对稀疏矩阵A的经济型分解[C,R] = qr(A,b,0) %针对稀疏最小二乘问题的经济型分解函数 qrdelete格式 [Q,R] = qrdelete(Q,R,j) %返回将矩阵A的第j列移去后的新矩阵的qr分解函数 qrinsert格式 [Q,R] = qrinsert(Q,R,j,x) %在矩阵A中第j列插入向量x后的新矩阵进行qr分解。
若j大于A的列数,表示在A的最后插入列x。
1.3.6 特征值分解函数 eig格式 d = eig(A) %求矩阵A的特征值d,以向量形式存放d。
d = eig(A,B) %A、B为方阵,求广义特征值d,以向量形式存放d。
[V,D] = eig(A) %计算A的特征值对角阵D和特征向量V,使AV=VD成立。
[V,D] = eig(A,'nobalance') %当矩阵A中有与截断误差数量级相差不远的值时,该指令可能更精确。
'nobalance'起误差调节作用。
[V,D] = eig(A,B) %计算广义特征值向量阵V和广义特征值阵D,满足AV=BVD。
[V,D] = eig(A,B,flag) % 由flag指定算法计算特征值D和特征向量V,flag的可能值为:'chol' 表示对B使用Cholesky分解算法,这里A为对称Hermitian矩阵,B为正定阵。
'qz' 表示使用QZ算法,这里A、B为非对称或非Hermitian矩阵。
说明 一般特征值问题是求解方程: 解的问题。
广义特征值问题是求方程: 解的问题。
1.3.7 奇异值分解函数 svd格式 s = svd (X) %返回矩阵X的奇异值向量[U,S,V] = svd (X) %返回一个与X同大小的对角矩阵S,两个酉矩阵U和V,且满足= U*S*V'。
若A为m×n阵,则U为m×m阵,V为n×n阵。
奇异值在S的对角线上,非负且按降序排列。
[U,S,V] = svd (X,0) %得到一个“有效大小”的分解,只计算出矩阵U的前n列,矩阵S的大小为n×n。
1.4 线性方程的组的求解我们将线性方程的求解分为两类:一类是方程组求唯一解或求特解,另一类是方程组求无穷解即通解。
可以通过系数矩阵的秩来判断:若系数矩阵的秩r=n(n为方程组中未知变量的个数),则有唯一解;若系数矩阵的秩r 1.4.1 求线性方程组的唯一解或特解(第一类问题)这类问题的求法分为两类:一类主要用于解低阶稠密矩阵 —— 直接法;另一类是解大型稀疏矩阵 —— 迭代法。 1.利用矩阵除法求线性方程组的特解(或一个解)方程:AX=b解法:X=A\\\\b2.利用矩阵的LU、QR和cholesky分解求方程组的解(1)LU分解:LU分解又称Gauss消去分解,可把任意方阵分解为下三角矩阵的基本变换形式(行交换)和上三角矩阵的乘积。 即A=LU,L为下三角阵,U为上三角阵。 则:A*X=b 变成L*U*X=b所以X=U\\\\(L\\\\b) 这样可以大大提高运算速度。 命令 [L,U]=lu (A)(2)Cholesky分解若A为对称正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其转置的乘积,即: 其中R为上三角阵。 方程 A*X=b 变成 所以 (3)QR分解对于任何长方矩阵A,都可以进行QR分解,其中Q为正交矩阵,R为上三角矩阵的初等变换形式,即:A=QR方程 A*X=b 变形成 QRX=b所以 X=R\\\\(Q\\\\b)1.4.2 求线性齐次方程组的通解在Matlab中,函数null用来求解零空间,即满足A•X=0的解空间,实际上是求出解空间的一组基(基础解系)。 格式 z = null % z的列向量为方程组的正交规范基,满足 。 % z的列向量是方程AX=0的有理基1.4.3 求非齐次线性方程组的通解非齐次线性方程组需要先判断方程组是否有解,若有解,再去求通解。 因此,步骤为:第一步:判断AX=b是否有解,若有解则进行第二步第二步:求AX=b的一个特解第三步:求AX=0的通解第四步:AX=b的通解= AX=0的通解+AX=b的一个特解。 1.6 秩与线性相关性1.6.1 矩阵和向量组的秩以及向量组的线性相关性矩阵A的秩是矩阵A中最高阶非零子式的阶数;向量组的秩通常由该向量组构成的矩阵来计算。 函数 rank格式 k = rank(A) %返回矩阵A的行(或列)向量中线性无关个数k = rank(A,tol) %tol为给定误差1.6.2 求行阶梯矩阵及向量组的基行阶梯使用初等行变换,矩阵的初等行变换有三条:1.交换两行 (第i、第j两行交换)2.第i行的K倍 3.第i行的K倍加到第j行上去 通过这三条变换可以将矩阵化成行最简形,从而找出列向量组的一个最大无关组,Matlab将矩阵化成行最简形的命令是rref或rrefmovie。 函数 rref或rrefmovie格式 R = rref(A) %用高斯—约当消元法和行主元法求A的行最简行矩阵R[R,jb] = rref(A) %jb是一个向量,其含义为:r = length(jb)为A的秩;A(:, jb)为A的列向量基;jb中元素表示基向量所在的列。 [R,jb] = rref(A,tol) %tol为指定的精度rrefmovie(A) %给出每一步化简的过程 1.7 稀疏矩阵技术1.7.1 稀疏矩阵的创建函数 sparse格式 S = sparse(A) %将矩阵A转化为稀疏矩阵形式,即由A的非零元素和下标构成稀疏矩阵S。 若A本身为稀疏矩阵,则返回A本身。 S = sparse(m,n) %生成一个m×n的所有元素都是0的稀疏矩阵S = sparse(i,j,s) %生成一个由长度相同的向量i,j和s定义的稀疏矩阵S,其中i,j是整数向量,定义稀疏矩阵的元素位置(i,j),s是一个标量或与i,j长度相同的向量,表示在(i,j)位置上的元素。 S = sparse(i,j,s,m,n) %生成一个m×n的稀疏矩阵,(i,j)对应位置元素为si,m = max(i)且n =max(j)。 S = sparse(i,j,s,m,n,nzmax) %生成一个m×n的含有nzmax个非零元素的稀疏矩阵S,nzmax的值必须大于或者等于向量i和j的长度。 1.7.2 将稀疏矩阵转化为满矩阵函数 full格式 A=full(S) %S为稀疏矩阵,A为满矩阵。 1.7.3 稀疏矩阵非零元素的索引函数 find格式 k = find(x) %按行检索X中非零元素的点,若没有非零元素,将返回空矩阵。 [i,j] = find(X) %检索X中非零元素的行标i和列标j[i,j,v] = find(X) %检索X中非零元素的行标i和列标j以及对应的元素值v1.7.4 外部数据转化为稀疏矩阵函数 spconvert格式 S=spconvert(D) %D是只有3列或4列的矩阵说明:先运用load函数把外部数据(.mat文件或.dat文件)装载于MATLAB内存空间中的变量T;T数组的行维为nnz或nnz+1,列维为3(对实数而言)或列维为4(对复数而言);T数组的每一行(以[i,j,Sre,Sim]形式)指定一个稀疏矩阵元素。 1.7.5 基本稀疏矩阵1.带状(对角)稀疏矩阵函数 spdiags格式 [B,d] = spdiags(A) %从矩阵A中提取所有非零对角元素,这些元素保存在矩阵B中,向量d表示非零元素的对角线位置。 B = spdiags(A,d) %从A中提取由d指定的对角线元素,并存放在B中。 A = spdiags(B,d,A) %用B中的列替换A中由d指定的对角线元素,输出稀疏矩阵。 A = spdiags(B,d,m,n) %产生一个m×n稀疏矩阵A,其元素是B中的列元素放在由d指定的对角线位置上。 2.单位稀疏矩阵函数 speye格式 S = speye(m,n) %生成m×n的单位稀疏矩阵S = speye(n) %生成n×n的单位稀疏矩阵3.稀疏均匀分布随机矩阵函数 sprand格式 R = sprand(S) %生成与S具有相同稀疏结构的均匀分布随机矩阵R = sprand(m,n,density) %生成一个m×n的服从均匀分布的随机稀疏矩阵,非零元素的分布密度是density。 R = sprand(m,n,density,rc) %生成一个近似的条件数为1\\\/rc、大小为m×n的均匀分布的随机稀疏矩阵。 4.稀疏正态分布随机矩阵函数 sprandn格式 R = sprandn(S) %生成与S具有相同稀疏结构的正态分布随机矩阵。 R = sprandn(m,n,density) %生成一个m×n的服从正态分布的随机稀疏矩阵,非零元素的分布密度是density。 R = sprandn(m,n,density,rc) %生成一个近似的条件数为1\\\/rc、大小为m×n的均匀分布的随机稀疏矩阵。 5.稀疏对称随机矩阵函数 sprandsym格式 R = sprandsym(S) %生成稀疏对称随机矩阵,其下三角和对角线与S具有相同的结构,其元素服从均值为0、方差为1的标准正态分布。 R = sprandsym(n,density) %生成n×n的稀疏对称随机矩阵,矩阵元素服从正态分布,分布密度为density。 R = sprandsym(n,density,rc) %生成近似条件数为1\\\/rc的稀疏对称随机矩阵R = sprandsym(n,density,rc,kind) %生成一个正定矩阵,参数kind取值为kind=1表示矩阵由一正定对角矩阵经随机Jacobi旋转得到,其条件数正好为1\\\/rc;kind=2表示矩阵为外积的换位和,其条件数近似等于1\\\/rc;kind=3表示生成一个与矩阵S结构相同的稀疏随机矩阵,条件数近似为1\\\/rc ,density被忽略。 1.7.6 稀疏矩阵的运算1.稀疏矩阵非零元素的个数函数 nnz格式 n = nnz(X) %返回矩阵X中非零元素的个数2.稀疏矩阵的非零元素函数 nonzeros格式 s = nonzeros(A) %返回矩阵A中非零元素按列顺序构成的列向量3.稀疏矩阵非零元素的内存分配函数 nzmax格式 n = nzmax(S) %返回非零元素分配的内存总数n4.稀疏矩阵的存贮空间函数 spalloc格式 S = spalloc(m,n,nzmax) %产生一个m×n阶只有nzmax个非零元素的稀疏矩阵,这样可以有效减少存贮空间和提高运算速度。 5.稀疏矩阵的非零元素应用函数 spfun格式 f = spfun('function',S) %用S中非零元素对函数'function'求值,如果'function'不是对稀疏矩阵定义的,同样可以求值。 6.把稀疏矩阵的非零元素全换为1函数 spones格式 R = spones(S) %将稀疏矩阵S中的非零元素全换为11.7.7 画稀疏矩阵非零元素的分布图形函数 spy格式 spy(S) %画出稀疏矩阵S中非零元素的分布图形。 S也可以是满矩阵。 spy(S,markersize) % markersize为整数,指定点阵大小。 spy(S,'LineSpec') %'LineSpec'指定绘图标记和颜色spy(S,'LineSpec',markersize) %参数与上面相同 clc;clearA=[1 1 2 2 2 3 4 4 5 5]B=[1,3,5]for m=1:length(B)C(m,:)=A-B(m) %A的每个元去B的每个元素endD=1.\\\/C%倒数,要用到E=isinf(D)%没有iszero函数,只样啦F=B*EG=F(find(F~=0))运果:A =1 1 2 2 2 3 4 4 5 5B =1 3 5C =0 0 1 1 1 2 3 3 4 4C =0 0 1 1 1 2 3 3 4 4-2 -2 -1 -1 -1 0 1 1 2 2C =0 0 1 1 1 2 3 3 4 4-2 -2 -1 -1 -1 0 1 1 2 2-4 -4 -3 -3 -3 -2 -1 -1 0 0D =Inf Inf 1.0000 1.0000 1.0000 0.5000 0.3333 0.3333 0.2500 0.2500-0.5000 -0.5000 -1.0000 -1.0000 -1.0000 Inf 1.0000 1.0000 0.5000 0.5000-0.2500 -0.2500 -0.3333 -0.3333 -0.3333 -0.5000 -1.0000 -1.0000 Inf InfE =1 1 0 0 0 0 0 0 0 00 0 0 0 0 1 0 0 0 00 0 0 0 0 0 0 0 1 1F =1 1 0 0 0 3 0 0 5 5G =1 1 3 5 5 Matlab中有两种矩阵除法符号:“\”即左除和“/”即右除.如果A矩阵是非奇异方阵,则A\\\\B是A的逆矩阵乘B,即inv(A)*B;而B\\\/A是B乘A的逆矩阵,即B*inv(A).具体计算时可不用逆矩阵而直接计算.通常:x=A\\\\B就是A*x=B的解;x=B\\\/A就是x*A=B的解.当B与A矩阵行数相等可进行左除.如果A是方阵,用高斯消元法分解因数.解方程:A*x(:, j)=B(:, j),式中的(:, j)表示B矩阵的第j列,返回的结果x具有与B矩阵相同的阶数,如果A是奇异矩阵将给出警告信息.如果A矩阵不是方阵,可由以列为基准的Householder正交分解法分解,这种分解法可以解决在最小二乘法中的欠定方程或超定方程,结果是m×n的x矩阵.m是A矩阵的列数,n是B矩阵的列数.每个矩阵的列向量最多有k个非零元素,k 是A的有效秩. 给你改了下:L = 1046.95; % L is the total distance for the beam.% The unit for L is mmA = 1031.95; % A = l3 is the distance form the diagram.B = 866.85; % B = l2 is the distance form the diagram.D = 581.05; % D = l1 is the distance form the diagram.% The unit for l1,l2 & l3 are mmE = 209; % E is modulus of elasticity, elliptic integral of the second kind.% The unit for E is GPaI = 91934.0; % I is moment of inertia of a plane area. If w choose the constants diameter for d1=6mm and d2=37mm% The unit for I is mm.N = input('please enter the value for N=') % N is finite elementsh = L\\\/N % h is widthc = input('Please enter the value for i=');if (0<=c)&(c<=N)elseerror('The i over the range.')endC=[];for i=0:cx=i*h; % x is measure downwards from the fixture at the top.Ma = 1; % bending moment when x = l3. The unit for Ma is Nm.C=[C;-(h^2*(L-x)\\\/(E*I))];endC %在窗口输出C MATLAB 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是最有活力的软件。 它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。 它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。 MATLAB 语言在各国高校与研究单位起着重大的作用。 补充:MATLAB的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵。 MATLAB自问世以来,就是以数值计算称雄。 MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使得MATLAB高度“向量化”。 经过十几年的完善和扩充,现已发展成为线性代数课程的标准工具。 由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。 美国许多大学的实验室都安装有MATLAB供学习和研究之用。 在那里,MATLAB是攻读学位的大学生硕士生、博士生必须掌握的基本工具。 MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。 工具箱实际上是对MATLAB进行扩展应用的一系列 MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等。 随着MATLAB版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。 MATLAB5.3中包括了图形界面编辑GUI,改变了以前单一的“在指令窗通过文本形的指令进行各种操作”的状况。 这可让使用者也可以象VB、VC、 VJ、DELPHI等那样进行一般的可视化的程序编辑。 在命令窗口(matlab command window)键入simulink,就出现(SIMULINK) 窗口。 以往十分困难的系统仿真问题,用SIMULINK只需拖动鼠标即可轻而易举地解决问题,这也是近来受到重视的原因所在。 作图的plot函数和ezplot比较常见差分的没看,不知道线性的linprog或者用牛顿法,都可以,前面的比较好用非线性用最小二乘或者lsqcurvefit非线性拟合优化的有很多,黄金分割,进退法,这些都可以,最速下降法都可以,这几个也是可以用手算的,当然最速下降法手算有点难,因为当他接近目标的时候会很慢,算很多次,一般先最速下降,后牛顿,这样配合比较好matlab怎么比较矩阵中的每个数值。
matlab 矩阵除法
matlab矩阵帮助
MATLAB课程内容总结



