Matlab矩阵和数组运算

时间:2022-05-26 06:43:58
matlab命令集 矩阵和矩阵操作基础--> 矩阵和数组基础

blkdiag   :构造一个分块对角矩阵 
eye       :创建单位矩阵 
linespace :产生线性间隔向量 
logspace  :产生对数间隔向量 
ones      :产生元素全为1的数组 
rand      :产生均匀分布随机数组 
randn     :产生正态分布随机数组 
zeros     :产生全零数组 

matlab命令集:矩阵和矩阵操作基础-->特殊变量和常量

ans       :对最近输入的反应 
computer  :当前计算机类型 
eps       :浮点精度 
flops     :计算浮点操作次数,现已不再常用 
i         :虚部单位 
inf       :无穷大 
inputname :输入参数名 
j         :虚部单位 
nan       :非数值 
nargin    :输入参数的数目 
nargout   :输出参数的数目(用户定义函数) 
pi        :圆周率 
realmax   :最大正浮点数 
realmin   :最小正浮点数 
varargin,varargout:返回参数数目(matlab函数) 

matlab命令集:矩阵和矩阵操作基础-->时间和日期

calendar    :返回日历 
clock       :当前时间 
cputime     :从启动经过的cpu时间 
date        :日期 
datenum     :转换成连续日期数 
datestr     :日期字符串 
datevec     :日期分隔部分 
eomday      :一个月的日期 
etime       :经过的时间 
now         :当前的日期和时间 
tic, toc    :秒表定时器 
weekday     :星期几 

matlab命令集:矩阵和矩阵操作基础-->矩阵操作

cat         :把矩阵按行或列连接起来 
diag        :给定向量,构造对角矩阵 
fliplr      :矩阵左右翻转 
flipud      :矩阵上下翻转 
repmat      :复制数组,repmat(A,m,n)表示把A复制m行n列组成新数组 
reshape     :按逐列来的方式重新整形数组 
rot         :按逆时针方向旋转90度 
tril        :返回一个矩阵的下三角矩阵 
triu        :返回一个矩阵的上三角矩阵 

matlab命令集:矩阵和矩阵操作基础-->特殊函数矩阵

compan      :返回向量的伴随矩阵 
eig         :矩阵特征值 
gallery     :测试矩阵,或者说大约50个矩阵模版 
hadamard    :哈达马得矩阵 
hankel      :汉克尔矩阵 
hilb        :希尔波特矩阵 
invhilb     :逆希尔波特矩阵 
magic       :魔术方阵 
pascal      :帕斯卡矩阵 
toeplitz    :托普利茨矩阵 
wilkinson   :维尔金森特征值测试矩阵 

matlab 矩阵,数组,算术运算及实例

 

矩阵

    有m×n 个数aij ( i = 1, 2, … m ; j = 1, 2,…n )的数组将其排成如下格式(用方括号括起来)的“表”:

                               a11   a12    …    a1n

A =      a21   a22    …    a2n

                              …    …    …    …

                             am1   am2    …    amn

注:数组用方括号括起来后已作为一个抽象的特殊量——矩阵

数组

数组是由一组复数排成的长方形阵列(而实数可视为复数的虚部为0的特例)

注:数组的所有运算都是对被运算数组中的每个元素平等的执行同样操作。矩阵运算是从把矩阵整体当作一个特殊的量这个基点出发,依照线性代数的规则来进行运算。

1、              数组或矩阵元素的标识

(1)一维数组的元素的标识,访问和赋值

一维数组标识:使用方括号以及在括号内列出以空格或逗号分隔其元素的表。一维数组的元素是以数组名后圆括号内的元素在数组中位置的顺序号来标识的,数组元素的访问与赋值就是根据数组元素的标识进行的。

【例2-5】一维数组元素的标识

x = [1* pi   2*pi 3*pi   4*pi 5* pi ];x

x( 2:4 ) x ( 4: end ) x ( 3: -1:1) x ( find ( x<10 )) x ( 1) =1

(2)多维数组或矩阵元素的标识,访问与赋值

A (m, n)

   其中:m为行号,n为列号。

说明:1)A:数组名;()数组名后用圆括号;

2)m,n:前面为行号,后面为列号,顺序不能颠倒;

3)行、列之间用逗号分开,此处逗号不能换成空格。

子数组访问与赋值常用的相关指令格式

指令格式

指令功能

A(r,c)

由数组A中指定行r,指定列c元素组成的子数组

A(r,:)

由数组A中指定行r对应的所有列元素组成的子数组

A(:,c)

由数组A中指定列c对应的所有行元素组成的子数组

A(:)

由数组A的各个列按从左到右的次序首末相接的“一维长列”子数组

A(i)

“一维长列”子数组的第i个元素

【例2-6】数组(矩阵)元素的标识

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

A ( 2 ,3 )   A(3,:) A(:,2)   (A(:))' A( 6 )

2、数组与矩阵的输入

(1)       一维行或列向量的输入

A.显示元素的列表输入 ( 在MATLAB命令窗口输入指令并回车)

【例2-7】向量元素的列表输入

A =[ 1   2*pi   sqrt( 3 ) 4+5i];A

   B.冒号生成法

   一般格式为:x = a : inc : b

【例2-8】t = 0: 0.1:0.6    t = [ 0:0.1:0.6 ]

(2)二维数组(或矩阵)的输入

A.显示元素列表输入

在MATLAB 中输入数组需要遵循以下基本规则:

1) 把数组元素列入括号[ ] 中;

2) 每行内的元素间(列)用逗号或空格分开;

3) 行与行之间用分号(或回车键enter)隔开。

【例2-9】元素列表输入数组(矩阵)

              1   2   3

A =     4   5   6

        7   8   9

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

B.利用M文件生成数组或矩阵[M210]

【例2-10】

C.小矩阵联接生成大矩阵

在MATLAB中利用联接算子----方括号[ ] 可将小矩阵联接为一个大矩阵

【例2-11】 利用方括号 [ ] 将小矩阵联接成大矩阵

A = [ 1 2;3 4];A

A1 = A + 5 A2= A + 10 A3= A1 + 10 G = [ A A1;A2 A3 ]

3.数组、矩阵的算术运算

(1)数组、矩阵的加减运算

在MATLAB里,维数为1×1 的数组叫做标量。而MATLAB里的数值元素是复数,所以一个标量就是一个复数。

注:标量与数组间可以进行加减运算。其规则是标量与数组的每一个元素进行加减操作。矩阵与标量间不存在这种运算。

【例2-12】数组与标量之间实施加减运算

S=5;

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

A+S A - S   S -A

(2)数组、矩阵的乘法运算

数组乘法运算:“. * ”

数组的乘法运算必须在具有相同维数的数组间进行,其结果是数组对应元素间相乘的结果组成的新数组。而两矩阵相乘必需服从数学中矩阵叉乘的条件与规则。

A 、数组、矩阵与标量的乘法运算

【例2-13】 标量与数组(矩阵)之间的乘法运算

    S=5;

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

    S.*A   A.*S     S*A   A *S

B、数组、矩阵间的乘法运算

数组的乘法运算必须在具有相同维数的数组间进行,两矩阵相乘的条件是左矩阵的列数必须等于右矩阵的行数,矩阵乘法不满足交换律。

【例2-14】 数组乘法运算

a = [1 2 3;4 5 6;7 8 9];

b= [ 2 2 2;2 2 2;2 2 2];

a .*b     b.*a

【例2-15】 矩阵乘法运算

             1 2 3                          2 2 2

a=    4 5 6                   b=    2 2 2

      7 8 9                         2 2 2

   a = [1 2 3;4 5 6;7 8 9];

b= [ 2 2 2;2 2 2;2 2 2];

a * b   b * a

由此可见,在MATLAB中数组的乘法与矩阵的乘法遵循的运算规则是不同的,其结果也不同。

数组乘法 : a .* b = b .* a

矩阵乘法 : a * b ≠ b * a

(3)数组、矩阵的除法运算

A.数组与标量间的除法运算

标量与数组间可以进行除法运算,其规则是标量与数组的每一个元素进行除法操作。

注: 矩阵与标量间则无这种运算

【例2-16】 数组与标量间的除法运算

    S =5;

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

    S ./A   A.\S S.\A   A./S  

B.数组、矩阵的除法运算

    数组:维数相同两数组的除法也是对应元素间的相除,数组间的相除,数组的除法没有左除和右除之分,即符号 “. \ ” “. / ”的运算结果是一致的。注意被除数与除数在两种除法运算符中的左右位置是不同的。

矩阵:矩阵除法运算有左除与右除之分,即运算符号 “\ ” “/ ”

指代的运算。

运算规则: a \ b = inv (a) * b a / b = a * inv (b)

    注:inv→ 逻辑特征命令,指“ 矩阵求逆”

【例2-17】数组的除法

    a = [1 2 3;4 5 6;7 8 9];

b= [ 2 2 2;2 2 2;2 2 2];

a./ b   b.\a

运算结果说明:

数组除法中,a. / b = b. \ a

. / .\ 两种符号运算结果是一致的。

【例2-18】矩阵的除法

      c = [1 2 3;4 5 6;7 8 9];

      d = [1 0 0;0 2 0;0 0 3 ];

c\d   inv (c) *d   c/d   c* inv (d )

运算结果说明:

    1、矩阵左除、右除是不一样的 : c \ d ≠c / d;

    2、矩阵除法运算规则是

     c / d =c * inv (d )

     c \ d = inv (c) * d

(4)数组、矩阵的乘方运算

        “ . ^ ”

    A. 数组与标量的乘方运算

     ①以数组为底而以标量为指数的乘方运算

【例2-19】 以数组为底而以标量为指数的乘方运算

    a = [ 4 5 6];

a.^ 4

    b = [1 2;3 4 ];

    b.^3

②以标量为底而以数组为指数的乘方运算

      a = [ 4 5 6] ; b = [1 2 ;3 4 ];

      d = 2 ;

      e = d .^a

      f = d.^ b

B.数组与数组的乘方运算

【例2-20】 a = [ 4 5 6];         

b = [1 2 3 ];

c = [ 2 3;5 6 ];

d = [1 2;3 4 ];

e = a.^b    f =d.^c

显然,数组间的乘方运算只在维数相同的数组间进行。

C.矩阵的乘方运算

【例2-21】矩阵的乘方运算示例

a = [ 1 2 ;3 4 ];b = 2; c = -0.2;

a^b  

所以:a为矩阵, b为整数,矩阵的乘方a^b是矩阵a自乘b次,若b = 2 , a ^ b = a * a

a ^ c

    所以,a为矩阵,c为标量,矩阵的乘方a ^ c是矩阵a的c次方