《MATLAB中的矩阵运算函数》由会员分享,可在线阅读,更多相关《MATLAB中的矩阵运算函数(4页珍藏版)》请在金锄头文库上搜索。
1、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) :
2、 大于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=1 2 3;4 5 6;7 8 9;10 11 12;>> b=reshape(a,2,6);这段代码的结果是这样的:>> a
3、160; 1 2 3 4 5 6 7 8 9 10 11
4、; 12>> b 1 7 2 8 3 9 4 10 5 11
5、160; 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的符号不同时,r
6、em函数结果的符号和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
7、0; %“除数”是正,“余数”就是正>> mod(-5,2) ans =1>> mod(5,-2) ans =-1 %“除数”是负,“余数就是负>> mod(-5,-2) ans =-1
8、 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同>> rem(5,2) ans =1 %“被除数”是正,“余数”就是正>> rem(5,-2) ans =1>> rem(-5,2) ans =-1
9、160;%“被除数”是负,“余数”就是负>> 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的第一个元素是
10、矩阵的行数,第二个元素是矩阵的列数 输出:s=3 4 3、r,c=size(A)%将矩阵A的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c 输出:r=3
11、 c=4 4、r,c,m=size(A) 输出:r=3 c=4 m=1也就说它把二维矩阵当作第三
12、维为1的三维矩阵,这也如同我们把n维列向量当作n×1的矩阵一样 5、当a是一个n维行向量时,size(A)把其当成一个1×n的矩阵,因此size(a)的结果是 ans=1 n而不是a的元素个数n 6、size(A,n) 如果在size函数的输入参数中再添加一项n,并用
13、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(1 8 0 0 -10,2 -1 3)%q是商,r是余数。数组从后到前表示从次项到各高次项的系数6,bitor(a,b)对a、b按位进行或运算bitand(a,b)对a、b按位进行和运算bitcmp(a,N)a在2N-1上按位的补集,bitcmp():逐位逻辑非。Bitxor 按位异或7,格式:B = sort(A)
14、160; %沿着输入参量 A的不同维的方向、从小到大重新排列 A中的元素。A 可以是字符串的、实数的、复数的单元数组。对于 A 中完全相同的元素,则按它们在 A 中的先后位置排列在一块;若 A 为复数的,则按元素幅值的从小到大排列,若有幅值相同的复数元素,则再按它们在区间- , 的幅角从小到大排列;若 A 中有元素为NaN,则将它们排到最后。若 A为向量,则返回从小到大的向量,若A为二维矩阵,则按列的方向进行排列;若A为多维数组,sort(A)把沿着第一非单元集的元素像向量一样进行处理。B=sort(A,dim) %沿着矩阵A中指定维数dim方向重新排列A中的元素。B,IX=sor
15、t(A); %其中IX是一个大小等于size(A)的数组,其每一列是A中列向量的元素相对应的置换位置记号。举例:A = 3 3 5 0 4 2 ;sort(A,1) %纵向排列ans = 0 3 2 3 4 5sort(A,2) %横向排列ans = 3
16、; 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 =
17、Columns 1 through 4 -0.2000 -1.9000 3.1416 2.4000 + 3.6000i Columns 5 through
18、6 5.6000 7.0000 INDEX = 2 1 3 6
19、; 4 5由此可知,如果A与另一个矩阵C(char或cell)一一对应,如果用B1,INDEX = sort(A)对A进行排序,则可以取得索引INDEX,进而可以查询B1中每个元素与C中哪一个对应。8,repmat函数B = repmat(A,m,n)B = repmat(A,m n)B = repmat(A,m n p.)这是一个处理大矩阵且内容有重复时使用,其功能是以A的内容堆叠在(MxN)的矩阵B中,B矩阵的大小由MxN及A矩阵的内容决定,如果A是一个3x4x5的矩阵,有B =
20、repmat(A,2,3)则最后的矩阵是6x12x5例如:>>B=repmat( 1 2;3 4,2,3)B = 1 2 1 2 1 23 4 3
21、0; 4 3 41 2 1 2 1 23 4 3 4
22、60; 3 4其结果变为4X6。也可以置放文字串,如:>>C=repmat(' Long live the king!', 2,2)C =Long live the king! Long live the king!Long live the king! Long live the king!也可置放其他的:>> 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)。