- 矩阵算法
cross(x,y) %得到向量x和y的叉积。 cross(A,B) %得到一个3×n矩阵,其中的列是A和B对应列的叉积。矩阵A和B必须具有相同的维数3×n。 cross(A,B,dim) %在dim数组中给出向量A和B的叉积。A和B必须具有相同的维数,size(A,dim)和size(B,dim)必须是3。 conv2(A,B) %返回矩阵A和B的二维卷积 conv2(hcol,hrow,A) %矩阵A与向量hcol列方式和向量hrow行方式的卷积。 conv2(…,format) %得到一个卷积的特殊形式。参数format必须是下列字符串之一:‘same’返回最接近中心的部分卷积,其维数与A相同。‘valid’仅返回不考虑边缘补零计算的部分卷积。 convn(A,B) %返回矩阵A和B的多维卷积。 convn(…,format) %得到卷积的一个特殊形式,如上所示。 kron(A,B) %得到A和B的Kronecker张量积。 expm(A) %使用Pade近似法计算eA,这是一个内部函数。 expm1(A) %使用一个M文件和与内部函数相同的算法计算eA。 expm2(A) %使用泰勒级数计算eA。 expm3(A) %使用特征值和特征向量计算eA。 logm(A) %计算A的对数。 sqrtm(A) %计算A1/2。当A是对称正定阵时,平方根是唯一的。 funm(A,fcn) %计算由字符串fcn指定的A的矩阵函数,字符串fcn可以是任意的基本函数,如sin、cos等等, A&B %返回一个与A和B相同维数的矩阵。在这个矩阵中,A和B对应元素都为非零时,则对应项为1;有一个为零的项则为0。 A|B %返回一个与A和B相同维数的矩阵。在这个矩阵中,A和B对应元素只要有一个为非零,则对应项为1;两个矩阵均为零时,则为0。 A ̃ %返回一个与A和B相同维数的矩阵。在这个矩阵中,A是零时,则对应项为1;A是非零时,则对应项为0。 xor(A,B) %返回一个与A和B相同维数的矩阵。在这个矩阵中,如果A和B均为零或均为非零时,则对应项为0;如果A或B是非零但不是两者同时为非零时,则对应项为1。 find(x) %返回一个x中包含非零元素的下标的向量。如果所有的元素都是零,那么返回一个空矩阵,即[]。 find(A) %返回一个长的列向量,表示A中包含非零元素的下标向量。 [u,v]=find(A) %返回向量u和v,它们包含A中的非零元素的下标,即A中元素(uk,vk)为非零。 [u,v,b]=find(A) %返回包含A中非零元素的下标向量u和v以及一个包含对应非零元素的向量。A中元素(uk,vk)为非零并且能在bk中找到。 any(x) %如果x中的有一个元素为非零值,那么返回1;否则,返回0。 any(A) %对A进行列运算,根据相应列是否包含非零元素,返回一个带1和0的行向量。 all(x) %如果所有的元素都是非零值,返回1;否则,返回0。 all(A) %对A进行列操作,根据相应列是否所有元素都为非零值,返回带1和0的一个行向量。 isnan(A) %返回一个维数与A相同的矩阵,在这个矩阵中,对应A中有‘NaN’处为1,其他地方为0。 isinf(A) %返回一个维数与A相同的矩阵,在这个矩阵中,对应A中有‘inf’处为1,其他地方为0。 isempty(A) %如果A是一个空矩阵,返回1;否则返回0。 isequal(A,B) %如果A和B是相同的,即有相同的维数和相同的内容,则返回1。 isreal(A) %如果A是一个不带虚部的实矩阵,则返回1;否则,返回零。 isfinite(A) %返回一个与A维数相同的矩阵。在这个矩阵中,A中元素是有限的,则对应元素为1;否则,为零。
- 创建新矩阵
ones(n) %建立一个n×n的1矩阵。 ones(m,n,...,p) %建立一个m×n×...×p的1矩阵。 ones(size(A)) %建立一个和矩阵A同样大小的1矩阵。 zeros(n) %建立一个n×n的0矩阵。 zeros(m,n,...,p) %建立一个m×n...×p的0矩阵。 zeros(size(A)) %建立一个和矩阵A同样大小的0矩阵。 eye(n) %建立一个n×n的单位矩阵。注意eye命令只能用来建立二维矩阵。 eye(m,n) %建立一个m×n的单位矩阵。注意eye命令只能用来建立二维矩阵。 eye(size(A)) %建立一个和矩阵A同样大小的单位矩阵。 rand %产生在0~1之间均匀分布的随机数;每调用一次给一个新的数值。 rand+i*rand %产生一个复数随机数。 rand(n) %产生一个n×n的矩阵,其元素为0~1之间均匀分布的随机数。 rand(m,n,...,p) %产生一个m×n×...×p的矩阵,其元素为0~1之间均匀分布的随机数。 rand %产生零均值、单位方差的正态分布随机数。 randn(n) %产生一个n×n的矩阵,其元素为零均值、单位方差的正态分布随机数。 randn(m,n,...,p) %产生一个m×n×...×p的矩阵,其元素为零均值、单位方差的正态分布随机数。 rand(‘state’) %返回一个有35个元素的向量,其中包含随机状态发生器的当前状态。 rand(‘state’,s) %设置随机种子发生器的状态为s。 rand(‘state’,0) %设置随机种子发生器为它的原始状态。 rand(‘state’,j) %设置随机种子发生器为它的第j种状态,j为整数。 rand(‘state’, sum(100*clock)) %使用clock命令(见命令集15),使得随机种子发生器在每个不同时刻都设置为一种不同的状态。 rand(‘seed’,arg) %使用MATLAB4中的随机种子发生器,见帮助可以得到更多的信息。 randn(‘state’) %返回一个有两个元素的向量,其中包含正态随机种子发生器的状态。 randn(‘state’,arg) %根据arg设置正态随机种子发生器,见rand。 diag(A) %生成一个由矩阵A主对角线元素组成的列向量。主对角线总是从矩阵左上角开始。对于方阵来说它结束于矩阵的右下角 diag(x) %生成一个n维的方阵,它的主对角线元素值取自向量x,其余元素的值都为0。 diag(A,k) %生成一个由矩阵A第k条对角线的元素组成的列向量。k=0为主对角线;k<0为下第k对角线;k>0为上第k对角线。 diag(x,k) %生成一个(n+abs(k))×(n+abs(k))维的矩阵,该矩阵的第k条对角线元素取自向量x,其余元素都为零。关于参数k可参考上个命令。 triu(A) %生成一个和A大小相同的上三角矩阵。该矩阵的主对角线及以上元素取自A中相应元素,其余元素都为零。 triu(A,k) %生成一个和A大小相同的上三角矩阵。该矩阵的第k条对角线及以上元素取自A中相应元素,其余元素都为零。命令triu(A,0)等同于命令triu(A)。 tril(A) %生成一个和A大小相同的下三角矩阵。该矩阵的主对角线及以下元素取自A中相应元素,其余元素都为零。 tril(A,k) %生成一个和A大小相同的下三角矩阵。该矩阵的第k条对角线及以下元素取自A中相应元素,负数k表示主对角线下的对角线。其余元素都为零。命令tril(A,0)等同于命令tril(A) squeeze(A) %返回没有空维的矩阵A。 sum(E) %返回0。 prod(E) %返回1。 max(E) %返回E。 min(E) %返回E。 linspace(a,b) %在区间[a,b]上创建一个有100个元素的向量,这100个数把整个区间线性分隔。 linspace(a,b,n) %在区间[a,b]上创建一个有n个元素的向量。这个命令和冒号表示形式相近,但是它直接定义了数据的个数。 logspace(a,b) %在区间[10a,10b]上创建一个有50个元素的向量,这50个数把整个区间对数分隔。特例:如果b=pi,则函数返回一个在区间[10a,pi]上服从对数分布的向量。 logspace(a,b,n) %在区间[10a,10b]上创建一个有n个元素的向量,这n个数把整个区间对数分隔,特例情况同上。 A(i,j,...,k) %返回多维数组A中下标为(i,j,...,k)的元素值, A(:,j) %返回二维矩阵A中第j列列向量。 A(i,:) %返回二维矩阵A中第i行行向量。 A(:,j:k) %返回由二维矩阵A中的第j列,第j+1列,直到第k列列向量组成的子阵。 A(i:k,:) %返回由二维矩阵A中的第i行,第i+1行,直到第k行行向量组成的子阵。 A(i:k,j:l) %返回由二维矩阵A中的第i行到第k行行向量和第j列到第l列列向量组成的子阵。 A(:,:,...,:) %返回矩阵A本身。 A(:) %将矩阵A中的每列合并成一个长的列向量。 A(j:k) %返回一个行向量,其中的元素为A(:)中的从第j个元素到第k个元素。 A([j1 j2...]) %返回一个行向量,其中的元素为A(:)中的第j1、j2...元素。 A(:,[j1 j2...]) %返回矩阵A的第j1列、第j2列等的列向量。 A([i1 i2...]:,) %返回矩阵A的第i1行、第i2行等的行向量。 A([i1 i2...], [j1 j2...]) %返回矩阵第i1行、第i2行等和第j1列、第j2列等的元素。 hilb(n) %生成一个n×n的希尔伯特矩阵。 invhilb(n) %生成一个n×n的希尔伯特矩阵的逆矩阵,其元素都为整数。 toeplitz(k,r) %生成一个非对称的托普利兹矩阵,将k作为第1列,将r作为第1行。其余的元素与左上角相邻元素相等 toeplitz(c) %用向量c生成一个对称的托普利兹矩阵。
- 字符串和其他数据类型
abs(str) %返回一个向量,其元素是字符串str中字符的ASCII码值。 char(x) %根据指定的字符集将向量x中的整数转换成字符。 num2str(f) %将数值f转换成浮点格式的字符串。 num2str(f,k) %将数值f转换成带有k位数字的浮点格式的字符串。 num2str(f,format) %将数值f转换成由format设定格式的字符串 int2str(n) %将整数n转换成整数字符串表达式。 rats(x,strlen) %将浮点小数x转换成含有对x的有理逼近的字符串 hex2num(hstr) %将字符串hstr中的十六进制数转换成相应浮点数(IEEE双精度)。 hex2dec(hstr) %将字符串hstr中的十六进制数转换成相应整数。 dec2hex(n) %将整数n转换成相应的十六进制数字符串。 base2dec(str,base) %将字符串str中从基数base开始的元素转换成十进制数。 dec2base(n,base) %将整数n转换成基数base。 bin2dec(str) %将字符串中的二进制数转换成十进制数。 dec2bin(n) %将整数n转换成二进制数。 mat2str(A,n) %将矩阵A转换成字符串。如果给出了n值,它就代表正确数字的个数。 str2num(str) %返回字符串str的数字形式,字符串可以包含数字、小数点,开始的符号表示10的幂的e,还有复数虚部的i。 blanks(n) %返回有n个空格的字符串。 deblank(str) %返回没有后续空格的字符串str。 lower(str) %将str中所有字母转换为小写字母。 upper(str) %将str中所有字母转换为大写字母。 ischar(s) %如果s是字符数据类型,则返回1;否则返回0。 isletter(str(i)) %如果str中的第i个字符是字母,则返回1。 isspace(str) %返回一个和str大小相同的向量。如果在str中的字符是空格、制表符或者换行符,则向量的相应位置的元素为1;否则为0。 strcmp(str1,str2) %比较串str1和串str2,如果相等返回1;否则返回0。 stricmp(str1,str2) %和strcmp一样,但是在比较时不区分大小写。 str2mat(str1,str2,...) %用str1、str2等创建字符串矩阵。如果字符串stri的大小不同,MATLAB自动在较短的字符串后添加空格。函数最多可以带11个参数,但是它们本身也可以是字符串矩阵。 findstr(str1,str2) %返回一个向量,它包含str1中子串str2的起始位置。 strrep(str1,str2,str3) %在字符串str1中含有str2的所有位置用str3来代替。 strtok(str1,str2) %返回在str1中含有str2的第一个标记前所有的str1的部分。如果str2没有指定,MATLAB使用空格,那么就找出str1中不含有空格的第一个序列。 [outstr,rstr]=strtok %字符串outstr等于strtok(str1,str2)返回值,字符串rstr(str1,str2)等于字符串str1余下的部分。 lasterr %返回上一个错误信息的字符串。 lastwarn %返回上一个警告信息的字符串。 strcat(str1,str2...), %将字符串str1和str2连接起来,它不同于对细胞矩阵操作的cat命令。 strvcat(str1,str2,...) %将str1和str2连接成一个列向量。str1和str2必须要有相同的字符个数,行数可以不相等,最后结果的总行数是它们的行数之和。 strmatch(key,strs) %检查strs中的各行,返回一个向量,它包含了行以字符串key开头的行号。 strncmp(str1,str2,n) %比较str1和str2中前n个字符,如果相等返回1;否则返回0。 strncmpi(str1,str2,n) %和命令strncmp一样,但是在比较时不区分大小写。 disp(A) %显示矩阵A的内容,如果A是字符串,则显示出它的文本。 input(out,in) %在屏幕上显示出字符串out的文本并等待终端的输入。如果变量in是‘s’,则输入的内容以字符串的形式进行保存,通常MATLAB在保存前要尽可能地求出表达式的值。如果使用格式控制符号如‘ ’,字符串out可以是若干行。 eval(str) %执行str中包含的MATLAB命令并返回结果。 eval(str1,str2) %执行str1中的MATLAB命令,如果没有错误就和执行eval(str1)一样;如果在对str1求值中第一个字符串是一个错误,则对字符串str2进行求值,给出一个错误信息或者其他内容。 [x1,x2,...]=evalin(aa,str) %和eval一样,决定在什么样的工作区中如读/写变量来对str求值。aa字符串可以是‘caller’(在evalin调用的工作内进行求值),也可以是‘base’(在MATLAB命令执行区来求值)。结果数据存储在x1,x2,...中。 evalin(aa,str,alt) %在工作区aa(见上)中试着对字符串str求值。如果不成功,则对字符串alt求值。 assignin(aa,name,val) %把值val赋给变量name,如果变量不存在,则新建。参量aa表示工作区,见命令evalin。 g=inline(str,arg1, arg2,...) %从字符串str中建立一个叫内联的函数g,如存储在工作内存中的函数,可以用g(val1,val2...)来调用。函数中参数的名字可以在字符串arg1,arg2,...中给出,如果没有给出,MATLAB将从str中找出小写字母作为参数的名字。 g=inline(str,n) %用n+1个参量x,P1,P2,...,Pn来建立一个内联函数。 argnames(g) %用内联函数g中的参量名字创建一个细胞矩阵。 vectorize(g) %为了满足元素操作,在*、/和^前加一个点‘.’,建立一个向量化的内联函数g。 formula(g) %把内联函数g作为字符串返回。 char(g) %等同于formula(g)。 mod(a,b) %返回a,b相除后的余数。 factor(a) %返回a的素数因数。 primes(a) %返回一个由不大于a的素数组成的行向量。 isprimes(a) %如果a是一个素数,则返回1。 nextpow2(a) %返回最小的整数n,满足条件2n>a。 perms(c) %返回向量c的所有可能的排列。 nchoosek(A,k) %返回一个每行有k个元素的矩阵,并列出了矩阵A中k个元素的可能每种组合 bitand(a,b) %返回a和b按位与操作后的值。 bitor(a,b) %返回a和b按位或操作后的值。 bitxor(a,b) %返回a和b按位异或操作后的值。 bitget(a,bit) %返回在整数a中位置bit的位值。 bitset(a,bit,newbit) %将值newbit赋于整数a中在位置bit的位。 bitshift(a,n) %对a进行n步移位操作,如果n为整数则左移;否则右移。 bitcmp(a,n) %返回n位a的补码整数。 bitmax %返回机器的最大浮点整数。 intersect(a,b) %返回集合a和b的交集。 ismember(a,s) %返回一个和a一样大小的0-1向量。当a的元素包含在s中时,该向量中相应位置为1;否则为0。 setdiff(a,b) %返回存在集合a中但不存在集合b中的值。 setxor(a,b) %返回存在集合a中但不存在集合b中和存在集合b中但不存在集合a中的所有的值。 union(a,b) %返回集合a和b的并集。 unique(a) %去掉集合a中重复的值,保证每个值在集合中只出现一次。 cell(m,n) %创建一个m×n的空细胞矩阵。 cell2struct(cell, posts,dim) %用细胞矩阵cell的元素和域posts创建一个结构,根据dim来决定挑选元素。dim=1是就是将cell中的第1列作为结构数1;要取出元素,dim应该为2。 celldisp(cell) %逐个显示cell的每个元素的值。还可以用该命令来显示cell中的细胞矩阵的元素。 cellplot(cell) %显示出cell的结构图。 cellstr(s) %用s中每一行作为一个细胞来创建一个细胞向量,命令char是这个函数的逆操作。 iscellstr(cell) %如果cell中只含有字符串,则返回1;如果cell中既有细胞矩阵又有字符串,则返回0。 num2cell(A,dim) %返回一个和矩阵A一样大小的细胞矩阵。如果给出了参量dim,在它自己的细胞中将dim维作为一个向量,这样得到的矩阵就和A的大小不一样。 [out1,out2,...]= deal(in1,in2,...) %将输入拷贝到输出中,如out1=in1,out2=in2等;参见helpdesk中有关细胞矩阵和结构的例程。
- 数据分析和统计
max(x) %返回x中最大的元素值,如果x是复数,则返回max(abs(x))值。 max(A) %返回一个含有A中第1维最大值的1×n×...×p矩阵。对于二维矩阵来说,返回一个行向量,它的第1个元素是A中第1列的最大的元素;如果A为复数时,则返回max(abs(A))值。 [y,ind]=max(A) %返回一个含有A中第1维最大值的1×n×...×p矩阵y,并在行向量ind中保存每列的最大数的行下标。 max(A,B) %返回一个和A、B相同维数的矩阵,每一元素都是在A和B中的相同位置上是最大的元素。 C=max(A,[],dim) %给出在指定的dim维内A的最大分量。如max(A,[],1),则给出A中最大的行向量。 min(x) %返回向量x中最小的元素。该命令关于矩阵的操作和max一样,如果x是复数,则返回min(abs(x))值。 sum(x) %返回向量x所有元素的和。 sum(A) %返回一个包含矩阵A各列元素之和的1×n×...×p矩阵。 cumsum(x) %返回一个x中元素累计和的向量,也就是第2个元素是x中前两个元素之和,以此类推。 cumsum(A) %返回一个与A同样大小的矩阵,它的列是A中列的累计和。 cumsum(A,dim) %给出A中dim维的元素累计和,命令cumsum(A)和命令cumsum(A,1)相同。 prod(x) %返回x中各元素乘积。 prod(A) %返回一个元素是列乘积的多维矩阵。 prod(A,dim) %给出dim维内的元素乘积。 cumprod(x) %返回一个x中各元素累计积的向量,也就是第2个元素是x中前两个元素的累计积,以此类推。 cumprod(A) %返回一个矩阵,其中列元素是A中列元素的累计积。 cumprod(A,dim) %给出在dim维内的累计积。 diff(x) %给出一个长度为n-1的向量,它的元素是长度为n的向量x中相邻的元素的差。 diff(A) %在A的第一维内计算相邻元素的差分。对于二维矩阵来说,就是diff(A)=A(2:m,:)-A(1:m-1,:)。 diff(x,k) %求出第k次差分,diff(x,2)和diff(diff(x))等价。 diff(A,k,dim) %在dim维内求出第k次差分。 mean(x) %求出向量x的算术平均值。 mean(A,dim) %给出一个1×n×...×p的矩阵,它包含A中第1维的各个平均值。如果给出了dim,就在dim维内计算。 median(x) %求出向量x中元素的中值。 median(A,dim) %给出一个1×n×...×p的矩阵,它包含A中第1维各列的中值。如果给出了dim,就在dim维内计算。 std(x) %求出向量x中元素的标准差。 std(A,dim) %给出一个1×n×...×p的矩阵,它包含A中第1维的各列标准差。如果给出了dim,就在dim维内计算标准差 cov(x) %求向量x的协方差。 cov(A) %求协方差矩阵,对角线元素是A中各列的方差。 cov(x,y) %等同于cov([xy]),x和y是列向量。 corrcoef(A) %求相关矩阵。 corrcoef(x,y) %等同于corrcoef([xy]),x和y是列向量。 sort(x) %返回一个向量x的元素按递增排序的向量。如果元素是复数,则使用绝对值进行排序,即sort(abs(x))。 [y,ind]=sort(x) %返回下标向量ind。就是y=x(ind)。另外向量y是x中元素按递增排序得到的。 sort(A,dim) %对A中各列按递增排序,注意矩阵的行已被改变。如果给出了dim,则在dim维内进行排序。 [B,Ind]=sort(A) %返回矩阵Ind和矩阵B,矩阵B的列为矩阵A中按递增排序的列,矩阵Ind的每列相对应于上面提到的向量中列ind。 sortrows(X,col) %对矩阵A的各行按递增排序。如果行的元素是复数,它们以abs(x)为主,以angle(x)为辅进行排序。如果给出col,则根据指定的列数对行进行排序。 hist(x) %在10个等分点内画出x中数据的统计频数直方图。 hist(x,n) %在n个等分点内画出x中数据的统计频数直方图。 hist(x,y) %在由向量y定义的等分点内画出x中数据的统计频数直方图,向量y中元素按递增排序。 bar(x) %画出x的棒图。 bar(z,x) %在由向量z定义的位置上画出x的棒图,z中的值必须是递增的均一分布。 bar(x,...,str) %画出如上的棒图,但可根据字符串str来设定颜色和形状。有关str的值,可参见13.1节。 bar(A) %画出以行分组的二维矩阵A的棒图。 stairs(x) %画出阶梯图,也就是内部没有线条的棒图。 stairs(z,x) %在由向量z定义的位置上画出储存在x中数据的棒图。 barh(x,A,format) %把m×n矩阵A画成m组n个棒图,可以通过字符串format来指定颜色,或者用字符串‘stacked’表示把同一列的数据画在一个直方条上。 barh(A) %和barh一样,但是x=1:m。 stem(y) %在x轴上画y的离散火柴杆图,以小圆代表数据,并以其为结束。 stem(z,y) %在x轴上由向量x指定的位置上画y的离散火柴杆图,以小圆代表数据,并以其为结束。 pareto(y,x) %按递减顺序画出向量y的棒图。给出的向量x可作为x轴的坐标。如果x坐标没有给出,则可用向量y中元素的下标。该命令也是用元素的累加和来画直线。 pie(x,extract) %画向量x的饼图。如果sum(x)<=1,则画出的是一个不完整的饼图,向量extract的大小和x一样;从x中取出与extract中每个非零的元素相同的元素。 [m,y]=hist(x) %在x的最大值和最小值之间等分成10个区间,在这个区间上画出统计频数直方图。向量y的元素为将min(x)和max(x)之间分成10个等间距的值,向量m为在每个区间内值的个数。这个直方图也可用命令bar(y,m,’.’)来画。 [m,y]=hist(x,n) %在n个等间距区间上画统计频数直方图。 [m,y]=hist(x,y) %在由向量y指定的区间上画统计频数直方图。 [xb,yb]=bar(y) %画y的棒图,这个棒图可以用命令plot(xb,yb)来画。 [xb,yb]=bar(x,y) %在由向量x指定的位置上画y的棒图 [xb,yb]=stairs(y) %画y的阶梯图。 [xb,yb]=stairs(x,y) %在向量x定义的区间上画y的阶梯图。 TRI=delaunay(x,y,’sorted’) %画一个三角形将向量x和y连接起来。如果给定参数‘sorted’,则假定没有重复数据,对y中的数据按递增排序。如果y的数据相同,则对x中的数据按递增排序。 voroni(x,y,TRI) %画集合x和y的Voronoi图形。如果给定TRI,则画出集合x和y的Delaunay三角形图形。 dsearch(x,y,TRI,px,py) %找到最接近(px,py)的由向量x和y定义的点的下标,矩阵TRI是x和y的三角矩阵。 tsearch(x,y,TRI,px,py) %找到由向量x和y形成的集合定义的三角形下标和最接近点(px,py)的三角矩阵TRI,它是x和y的三角矩阵。 polyarea(x,y) %画一个由A和B的列组成的集合定义的多边形。如果给定dim,则画出定义在dim维内的多边形。 polyarea(A,B,dim) %画一个由A的第1维组成的集合定义的多边形。如果给定dim,则画出定义在dim维内的多边形。 IN=inpolygon(x,y, px,py) %返回一个和x,y大小相同的向量IN。如果点(x,y)在由px和py定义的多边形内,则将IN中相等元素赋值为1;如果点在多边形上,则赋值为0.5;在多边形外,则赋值为0。 rectint(x,y) %画由向量x和y定义的矩形。 rectint(A,B) %从rectint(A(i,:),B(j,:))中返回所有可能组合的n×m矩阵,如果A是一个n×4的矩阵,B是一个m×4的矩阵。 convhull(x,y,TRI) %返回由x和y定义的点的下标,这个点在集合的凸起的位置上。如果给定了TRI,则用它;否则计算三角形。
- 线性方程系统
det(A) %求方阵A的行列式。 rank(A) %求A的秩,即A中线性无关的行数和列数。 inv(A) %求方阵A的逆矩阵。如果A是奇异矩阵或者近似奇异矩阵,则会给出一个错误信息。 pinv(A) %求矩阵A的伪逆。如果A是m×n的矩阵,则伪逆的大小为n×m。对于非奇矩阵A来说,有pinv(A)=inv(A)。 trace(A) %求矩阵A的迹,也就是对角线元素之和。 orth(A) %求A空间的正交基,它的列数等于A的秩。 null(A) %求A的零空间的正交基,它的列数等于零空间的维数。 subspace(x,y) %求列向量x和y的夹角,向量的长度必须一样。 subspace(A,B) %求由矩阵A和B的列划分的子空间的夹角,列的长度必须一样。 [L,U]=lu(A) %求上三角矩阵U和交换下三角矩阵L。L是一个带有单位对角线的下三角矩阵和交换矩阵,即P的逆矩阵的乘积,见下个命令。 [L,U,P]=lu(A) %求上三角矩阵U、有单位对角线的下三角矩阵L和交换矩阵P,满足LU=PA。 [Q,R]=qr(A) %求得m×m的矩阵Q和上三角矩阵R,Q的列形成了一个正交基,Q和R满足A=QR。 [Q,R,P]=qr(A) %求得矩阵Q、上三角矩阵R和交换矩阵P。Q的列形成一个正交基,R的对角线元素按大小降序排列,它们满足AP=QR。 [Q,R]=qr(A,0) %求矩阵A的QR因式分解。如果在m×n的矩阵A中行数小于列数,则给出Q的前n列,因此Q的大小和A相同。也能得到交换矩阵,见上或输入helpqr可获得帮助。 [Q1,R1]= qrdelete(Q,R,j) %求去掉矩阵A中第j列之后形成的矩阵的QR因式分解,矩阵Q和R是A的QR因子。 [Q1,R1]= qrinsert(Q,R,b,j) %求在矩阵A的第j列前插入一列向量b后形成的矩阵的QR因式分解,矩阵Q和R是A的QR因子。如果j=n+1,那么插入的一列放在最后 norm(A) %求欧几里得范数||A||2,等于A的最大奇异值,参见8.3节。 norm(A,1) %求列范数||A||1,等于A的列向量的1-范数的最大值。 norm(A,2) %求欧几里得范数||A||2,和norm(A)一样。 norm(A,inf) %求行范数||A||∞,等于A的行向量的1-范数的最大值。 norm(A,’fro’) %求Frobenius范数,|A|_r=√(Σ_i Σ_j |a_ij |^2 )这不能用矩阵p-范数的定义来求。 normest(A) %求欧几里得范数的估计值,相对误差小于106。 normest(A,tol) %求欧几里得范数的估计值,相对误差小于tol。 cond(A) %求A的欧几里得范数的条件数。 cond(A,p) %求p-范数的条件数,p的值可以是1、2、inf或者’fro’;见norm。 condest(A) %求矩阵A条件数的1-范数中的下界估计值。 [c,v]=condest(A) %求A的1-范数中条件数c的下界估计值,同时还计算向量v,使得它们满足条件。 [c,v]= condest(A,tr) %求如上的c和v,同时显示出关于计算的步骤信息。如果tr=1,则计算的每步都显示出来;如果tr=-1,则给出商c/rcond(A)。 rcond(A) %求矩阵A定义的方程组的敏感度的另一个估计值。对于差条件矩阵A来说,给出一个接近于0的数;对于好条件矩阵A,则给出一个接近于1的数。