视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Matlab中矩阵函数
2025-09-30 23:16:23 责编:小OO
文档
矩阵转置用符号“`”来表示和实现。 

例如: A=[1 2 3;4 5 6 ;7 8 9 ]; 

   B=A`↙ 

B=1 4 7 

2 5 8 

3 6 9 

如故Z是复数矩阵,则Z`为它们的复数共轭转置矩阵,非共轭转置矩阵使用Z.`或conj(Z`)。 

size(a) 

[d1,d2,d3,..]=size(a) 求矩阵的大小,对m*n二维矩阵,第一个为行数m,第二个为列数n; 

对矩阵,第N个为矩阵第N维的长度。 

cat(k,a,b) 矩阵合并,运行a = magic(3) 

b = pascal(3) 

c = cat(4,a,b) 

改4为3或2或1,自己体会合并后的效果。 

k=1,合并后形如 [a;b],行添加矩阵(要求a,b的列数相等才能合并); 

k=2,合并后形如[a,b],列添加矩阵(要求a,b的行数相等才能合并),以此类推,n维的矩阵合并,要求n-1维维数相等才可以)。 

fliplr(a) 矩阵左右翻转 

flipud(a) 矩阵上下翻转 

rot90(a) 

rot90(a,k) 矩阵逆时针旋转90度(把你的头顺时针旋转90看原数就可以知道结果了,^-^) 

k参数定义为逆时针旋转90*k度。 

flipdim(a,k) 矩阵对应维数数值翻转,如k=1时,行(上下)翻转,k=2时,列(左右)翻转。 

tril(a) 

tril(a,k) 矩阵的下三角部分(包括对角线元素),对应k=0时的取值数。 

k参数设置为正负数值对应对角线向上或向下移动k行划分下三角元素。 

triu(a) 

tril(a,k) 矩阵的上三角部分(包括对角线元素),对应k=0时的取值数。 

k参数设置为正负数值对应对角线向上或向下移动k行划分上三角元素。 

diag(a) 

diag(a,k) 生成对角矩阵或取出对角元素,对应k=0时的取值数。 

k参数设置为正负数值对应对角线向上或向下移动k行取对角元素或生成对角矩阵。 

repmat(a,m,n) 矩阵复制,把矩阵a作为一个单位计算,复制成m*n的矩阵,其每一元素都含一个矩阵a,实际结果为一个size(a,1)*m行,size(a,2)*n列的矩阵。 

w=meshgrid(s,t) 

[u,v]=meshgrid(s,t) 生成行m=size(t,1)*size(t,2),列n=size(s,1)*size(s,2))阶的两个矩阵。其中u为按行顺序取s的n个矩阵元数,按列排列重复m行,v为按列顺序取t的m个矩阵元数 ,按行排列重复n列。只生成一个矩阵时,w=u。 

eye(a) 

eye(a,k) 生成a阶单位方阵 

k参数设置为生成a×k阶单位矩阵,即生成a阶单位方阵后,取前k列,不足补0。 

ones(a) 

ones(a,k) 生成a阶全1方阵 

k参数设置生成a×k阶全1矩阵。 

zeros(a) 

zeros(a,k) 生成a阶全0方阵 

k参数设置生成a×k阶全0矩阵。 

inv(a) 生成a的逆矩阵

eps—机器的浮点运算误差限。PC机上eps的默认值为2.2204*10^-16,若某个量的绝对值小于eps,则可以认为这个量为0。 

i和j—若i或j量不被改写,则它们表示纯虚数量j。但在MATLAB程序编写过程中经常事先改写这两个变量的值,如在循环过程中常用这两个变量来表示循环变量,所以应该确认使用这两个变量时没被改写。如果想恢复该变量,则可以用语句i=sqrt(-1)设置,即对-1求平方根。 

Inf—无穷大量+∞的MATLAB表示,也可以写成inf。同样地,-∞可以表示为-Inf。在MATLAB程序执行时,即使遇到了以0为除数的运算,也不会终止程序的运行,而只给出一个“除0”警告,并将结果赋成Inf,这样的定义方式符合IEEE的标准。从数值运算编程角度看,这样的实现形式明显优于C这样的非专业语言。 

NaN—不定式(not a number),通常由0/0运算、Inf/Inf及其他可能的运算得出。NaN是一个很奇特的量,如NaN与Inf的乘积仍为NaN。 

pi—圆周率π的双精度浮点表示。 

lasterr—存放最新一次的错误信息。此变量为字符串型,如果在本次执行过程中没出现这错误,则此变量为空字符串。 

lastwarn—存放最新的警告信息。若未出现过警告,则此变量为空字符串。 

保留的变量 

ans—存放最近一次无赋值变量语句的运算结果。 

end—最后一行(列) 

nargin—函数输入变量的实际个数 

nargout—函数返回变量的实际个数 

保留字 

%—后接注释 

数据结构 

一、 数值型结构 

MATLAB语言中最常用的数值量为双精度浮点数,占8个字节(PS:与JAVA的double型相同)(位),遵从IEEE记数法,有11个指数位、53位尾数及一个符号位,值域的近似范围为-1.7*10^308至1.7*10^308,其MATLAB表示为double()。考虑到一些特殊的应用,MATLAB语言还引入了无符号的8位整形数据类型,其MATLAB表示为uint8(),其值域为0至255。此外,在MATLAB中还可以使用其他的数据类型,如int8(),int16(),int32(),uint16(),uint32()等,每一个类型后面的数字表示其位数。 

二、 符号型结构 

MATLAB还定义了“符号”型变量,以区别于常规的数值型变量,可以用于公式推导和数学问题的解析解法。申明语句为syms var_list var_props 。穑与型数值可以通过变精度算法函数vpa()以任意指定的精度显示出来。 

三、 其他数据结构 

1.字符串型数据 MATLAB支持字符串变量,可以用它来存储相关的信息。和C语言等程序设计语言不同,MATLAB字符串是用单引号括起来的,而不是用双引号。 

2.数组 三维数组是一般矩阵的直接拓展。在直接编程中还可以使用维数更高的数组。 

3.单元数据 单元数组是矩阵的直接扩展,其存储格式类似于普通的矩阵,而矩阵的每个元素不是数值,可以认为能存储任意类型的信息,这样每个元素称为“单元”(cell)。 

4.类与对象 MATLAB允许用户自己编写包含各种复杂详细的变量,亦即类变量。该变量可以包含各种下级的信息,还可以重新对类定义其计算,这在控制系统描述中特别有用。 

基本语句结构 

一、 直接赋值语句 

赋值变量=赋值表达式 

这一过程把等号右边的表达式直接赋给左边的赋值变量,并返回到MATLAB的工作空间。如果赋值表达式后面没有分号,则将在MATLAB命令窗口中表示表达式的运算结果。 

二、 函数调用语句 

[返回变量列表]=函数名(输入变量列表) 

三、 冒号表达式 

v=s1:s2:s3 

该函数将生成一个行向量v,其中s1为向量的起始值,s2为步距,该向量将从s1出发,每隔步距s2取一个点,直至不超过s3的最大值就可以构成一个向量。若省略s2,则步距取默认值1。(PS:“不超过”取决s2,若s2>0则为<=s3,否则为>=s3) 

四、 子矩阵提取表达式 

B=A(v1,v2) 

v1向量表示子矩阵要包含的行号构成的向量,v2表示要包含的列号构成的向量,这样从A矩阵中提取有关的行和列,就可以构成子矩阵B了。若v1为:,则表示要提取所有的行,v2亦然。 

矩阵的代数运算 

一、 矩阵转置 

MATLAB中用A’可以求出A矩阵的Hermit转置(共轭转置),矩阵的转置则可以由A.’求出。 

二、 加减法运算 

假设在MATLAB工作环境下有两个矩阵A和B,则可以由C=A+B和C=A-B命令执行矩阵加减法。若A和B矩阵的维数相同,它会自动地将A和B矩阵的相应元素相加减,并赋给C变量。若二者之一为标量,则将其遍加(减)于另一个矩阵。其它情况下,MATLAB将报错。 

三、 矩阵乘法 

MATLAB语言中两个矩阵的乘法由C=A*B直接求出,且这里并不需要指定A和B矩阵的维数。若A和B矩阵的维数不相容(A列数不等于B行数),则将报错。 

四、 矩阵的左除 

MATLAB中用“\\”运算符号表示两个矩阵的左除,A\\B为方程AX=B的解X。若A为非奇异方阵,则X=A-1B。 

五、 矩阵的右除 

MATLAB中定义了“/”符号,用于右除,相当于求方程XA=B的解。 

B/A=(A’\\B’)’ 

六、 矩阵翻转 

MATLAB提供了一些矩阵翻转处理命令。 

七、 矩阵乘方运算 

在MATLAB中统一表示成F=A^x。 

八、 点运算 

两个矩阵之间的点运算是它们对应元素的直接运算,例如.*,.^等。 

矩阵的逻辑运算 

在MATLAB语言中,如果一个数的值为0,则可以认为它为逻辑0,否则为逻辑1。(PS:包括负数和复数)。 

一、 矩阵的与运算 

在MATLAB下用&号表示矩阵的与运算 

二、 矩阵的或运算 

在MATLAB下用|号表示矩阵的或运算 

三、 矩阵的非运算 

在MATLAB下用~号表示矩阵的非运算 

四、 矩阵的异或运算 

在MATLAB下矩阵A和B的异或运算可以表示成xor(A,B)。 

矩阵的比较运算 

< = > <= >= == ~=

循环结构 

一、 for语句的一般结构 

for i=V,循环结构体,end 

在for循环结构中,V为一个向量,循环变量i每次从V向量中取一个数值,执行一次循环体的内容,如此下去,直至执行完V向量中所有的分量。 

二-while循环的基本结构 

while (条件式),循环结构体,end 

while循环中的“条件式”是一个逻辑表达式,若其值为真(非零)则将自动执行循环体的结构,执行完后再判定“条件式”的真伪,为真则仍然执行结构体,否则将退出循环结构。 

转移结构 

其一般结构为 

if (条件1) % 如果条件1满足,则执行下面的段落1 

语句组1 %这里也可以嵌套下级的if结构 

elseif (条件2) %否则如果满足条件2,则执行下面的段落2 

语句组2 

… %可以按照这样的结构设置多种转移条件 

… 

… 

else %上面的条件均不满足时,执行下面的段落 

语句组n+1 

end 

开关结构 

其基本结构为 

switch 开关表达式 

case 表达式1 

语句段1 

case {表达式2,表达式3,…,表达式m} 

语句段2 

… 

… 

… 

otherwise 

语句段n 

end 

试探结构 

结构如下 

try, 语句段1, 

catch, 语句段2, 

end 

此结构类似C++中的异常处理机制 

函数结构 

一、 MATLAB的M-函数是由function语句引导的,其基本结构如下: 

function [返回变量列表]=函数名(输入变量列表) 

注释说明语句段,由%引导 

输入、返回变量格式的检测 

函数体语句 

说明: 

1.这里输入和返回变量的实际个数分别由nargin和nargout给出。 

2.返回变量如果多于1个,则应用方括号将它们括起来,否则可省去方括号。输入变量之间用逗号分隔,返回变量用逗号或空格分隔。 

3.函数可递归调用 

二、可变输入输出个数的处理 

所有的输入变量列表由单元变量varargin表示。 

三 、inline函数与匿名函数 

1. 有时为了描述某个数学函数的方便,可以用inline()函数来直接编写该函数,形式相当于M-函数,但无编写一个真正的MATLAB文件,就可以描述出某种数学关系。其调用格式为fun=inline(‘函数内容’,自变量列表) 

2. 匿名函数是MATLAB 7.0版提出的一种全新的函数描述形式,其基本格式为f=@(变量列表)函数内容,例如,f=@(x,y)sin(x.^2+y.^2)。更重要的,该函数允许直接使用MATLAB工作空间中的变量。下载本文

显示全文
专题