资源描述:
《MATLAB中的矩阵运算函数.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1,round函数函数简介 调用格式:Y= round(X)在matlab中round也是一个四舍五入函数。对数组A中每个元素朝最近的方向取整数部分,并返回与A同维的整数数组B,对于一个复数参量A,则分别对其实部和虚数朝最近的方向取整数部分,并返回一复数数据B。(1)fix(x):截尾取整.>>fix([3.12-3.12])ans=3 -3(2)floor(x):不超过x的最大整数.(高斯取整)>>floor([3.12-3.12])ans=3 -4(3)ceil(x):大于x的最小整数>>ceil([3.12-3.12])ans=4 -3(4)四舍五入取整>> round(3.12-3.12)ans=0>> round([3.12-3.12])ans=3 -32,reshape函数:重新调整矩阵的行数、列数、维数先给上一段代码:>> a=[123;456;789;101112];>> b=reshape(a,2,6);这段代码的结果是这样的:>>a 1 2 3 4 5 6 7 8 9 10 11 12>>b 1 7 2 8 3 9 4 10 5 11 6 12对于 b=reshape(a,m,n);其中的规律是这样的,先把矩阵a按列拆分,然后拼接成一个大小为m*n的向量。然后对这个向量每隔m间隔取一个元素组成一个向量b_i,之后的向量b_i+1也是这样生成,只不过第一个元素往下移一位。这样做完之后得到m个大小为n的行向量,将这些行向量拼接即可得到矩阵b。3,取模(mod)与取余(rem)通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于: 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。 rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n=fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y) 例:>> mod(5,2)ans=1 %“除数”是正,“余数”就是正>> mod(-5,2)ans=1>> mod(5,-2)ans=-1 %“除数”是负,“余数‘就是负>> mod(-5,-2)ans=-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同>>rem(5,2)ans=1 %“被除数”是正,“余数”就是正>>rem(5,-2) ans=1>>rem(-5,2)ans=-1 %“被除数”是负,“余数”就是负>>rem(-5,-2)ans=-14,size函数size(A)函数是用来求矩阵的大小的,你必须首先弄清楚A到底是什么,大小是多少。比如说一个A是一个3×4的二维矩阵: 1、size(A)%直接显示出A大小 输出:ans=3 4 2、s=size(A)%返回一个行向量s,s的第一个元素是矩阵的行数,第二个元素是矩阵的列数 输出:s=3 4 3、[r,c]=size(A)%将矩阵A的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c 输出:r=3 c=4 4、[r,c,m]=size(A) 输出:r=3 c=4 m=1也就说它把二维矩阵当作第三维为1的三维矩阵,这也如同我们把n维列向量当作n×1的矩阵一样 5、当a是一个n维行向量时,size(A)把其当成一个1×n的矩阵,因此size(a)的结果是 ans=1 n而不是a的元素个数n 6、size(A,n) 如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的是矩阵A的行数,c=size(A,2)该语句返回的是矩阵A的列数。5,deconv函数求多项式x4+8x3-10除以多项式2x2-x+3的结果[q,r]=deconv([1800-10],[2-13])%q是商,r是余数。数组从后到前表示从〇次项到各高次项的系数6,bitor(a,b)对a、b按位进行或运算bitand(a,b)对a、b按位进行和运算bitcmp(a,N)a在2^N-1上按位的补集,bitcmp():逐位逻辑非。Bitxor按位异或 7,格式:B= sort(A) %沿着输入参量A的不同维的方向、从小到大重新排列A中的元素。A可以是字符串的、实数的、复数的单元数组。对于A中完全相同的元素,则按它们在A中的先后位置排列在一块;若A为复数的,则按元素幅值的从小到大排列,若有幅值相同的复数元素,则再按它们在区间[-π,π]的幅角从小到大排列;若A中有元素为NaN,则将它们排到最后。若A为向量,则返回从小到大的向量,若A为二维矩阵,则按列的方向进行排列;若A为多维数组,sort(A)把沿着第一非单元集的元素像向量一样进行处理。B=sort(A,dim)%沿着矩阵A中指定维数dim方向重新排列A中的元素。[B,IX]=sort(A);%其中IX是一个大小等于size(A)的数组,其每一列是A中列向量的元素相对应的置换位置记号。举例:A=[335042];sort(A,1)%纵向排列ans= 0 3 2 3 4 5sort(A,2)%横向排列ans= 3 3 5 0 2 4>>A=[-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i]; >>[B1,INDEX]= sort(A)计算结果为: B1= Columns1through4 -0.2000 -1.9000 3.1416 2.4000+3.6000i Columns5through6 5.6000 7.0000 INDEX= 2 1 3 6 4 5由此可知,如果A与另一个矩阵C(char或cell)一一对应,如果用[B1,INDEX]= sort(A)对A进行排序,则可以取得索引INDEX,进而可以查询B1中每个元素与C中哪一个对应。8,repmat函数B= repmat(A,m,n)B= repmat(A,[mn])B= repmat(A,[mnp...])这是一个处理大矩阵且内容有重复时使用,其功能是以A的内容堆叠在(MxN)的矩阵B中,B矩阵的大小由MxN及A矩阵的内容决定,如果A是一个3x4x5的矩阵,有B= repmat(A,2,3)则最后的矩阵是6x12x5例如:>>B=repmat([12;34],2,3)B= 1 2 1 2 1 23 4 3 4 3 41 2 1 2 1 2 3 4 3 4 3 4其结果变为4X6。A也可以置放文字串,如:>>C=repmat('Longlivetheking!',2,2)C=Longlivetheking!Longlivetheking!Longlivetheking!Longlivetheking!也可置放其他的:>>D=repmat(NaN,2,5)D=NaN NaN NaN NaN NaNNaN NaN NaN NaN NaN9.a*b就是矩阵乘法a.*b就是a,b的对应元素相乘10你好,matlab里是左除,/是右除。如果是数字计算,则左除和右除是等效的,例如3/2=23。而对于矩阵运算,则二者不等效。矩阵除法在matlab里定义为矩阵求逆后相乘。例如A的逆矩阵是A1,则B/A=B*A1,AB=A1*B。矩阵乘法不满足交换律,因此需要有左右除法之分。矩阵求逆的命令是inv,即A1=inv(A)。