Matlab:矩阵运算篇——矩阵

发布于:2025-03-09 ⋅ 阅读:(23) ⋅ 点赞:(0)

目录

1.定义

实例——创建矩阵

实例——创建复数矩阵

2.矩阵的生成

实例——M文件矩阵

2.利用文本创建

实例——创建生活用品矩阵

3.创建特殊矩阵

实例——生成特殊矩阵

 4.矩阵元素的运算

1.矩阵元素的修改

实例——新矩阵的生成

2.矩阵的变维

实例——矩阵维度修改

3.矩阵的变向

实例——矩阵的变向


1.定义

Matlab以矩阵作为数据操作的基本单位。矩阵是由m*n个数aij(i=1,2,...,m;j=1,2,...,n)排成的m行n列数表,记成。称为m*n矩阵,也可以记成或者。i表示行数,j表示列数,若m=n,则该矩阵为n阶矩阵(n阶方阵)。

用这个方法创建矩阵时,需要注意以下几点:

  • 输入矩阵时要以[]为其标识符;
  • 矩阵同行元素之间由空格(个数不限)或逗号分隔,行与行之间用分号或回车键分隔;
  • 矩阵大小不需要预先定义;
  • 若[]中无元素,表示空矩阵;
  • 如果不想显示中间结果,可以用分号结束。

实例——创建矩阵

创建元素均是15的3*3矩阵。matlab程序如下:

>>a=[15 15 15;15 15 15;15 15 15]
a=
   15 15 15
   15 15 15
   15 15 15

实例——创建复数矩阵

创建包含复数的矩阵A,其中,,matlab程序如下:

>> A=[[1,1+i,2];[2,3+2i,1]]

A =

   1.0000 + 0.0000i   1.0000 + 1.0000i   2.0000 + 0.0000i
   2.0000 + 0.0000i   3.0000 + 2.0000i   1.0000 + 0.0000i

2.矩阵的生成

矩阵的生成除了直接输入法,还可以利用M文件生成法和文本文件生成法等。

1.利用M文件创建

当矩阵的规模比较大时,直接输入法就显得笨拙,出差错也不易修改。为了解决这些问题,可以将所要输入的矩阵按格式先写入一文本文件中,以m为其扩展名,即M文件。

M文件是一种可以在matlab 环境下运行的文本文件,它可以分为命令式文件和函数式文件两种。在此处主要用到的是命令式M文件,用它的简单形式来创建大型矩阵。在matlab 命令行窗口中输入M文件名,所要输入的大型矩阵即可被输入到内存中。

实例——M文件矩阵

(1)编制一个名为gmatrix的矩阵。

(2)在M文件编辑器中编制一个名为sample.m的M文件。

(注:M文件中的变量名与文件名不能相同,否则会造成变量名和函数名混乱。)


>> sample.M
gmatrix=[378 89 90 83 382 92 29;
3829 32 9283 2938 378 839 29;
388 389 200 923 920 92 7478;
3829 892 66 89 90 56 8980;
7827 67 890 6557 45 123 35]

(3)运行M文件。在matlab命令行窗口中输入文件名,结果如下:

>> sample

gmatrix =

         378          89          90          83         382          92          29
        3829          32        9283        2938         378         839          29
         388         389         200         923         920          92        7478
        3829         892          66          89          90          56        8980
        7827          67         890        6557          45         123          35

2.利用文本创建

即在文件夹(通常为work文件夹)中建立txt文件,在命令行窗口中直接调用这个文件名即可。

实例——创建生活用品矩阵

日用商品在三家商店中有不同的价格,其中,毛巾有三种3.5元、4元,5元;脸盆10元,15元,20元;单位量的售价用矩阵表示(行表示商店,列表示商品),用文本文件创建矩阵x。
(1)事先在记事本中建立文件并输入

3.5 4 5
10 15 20

(2)以goods.txt保存,在命令行窗口中输入

>> goods

goods =

    3.5000    4.0000    5.0000
   10.0000   15.0000   20.0000

由创建商品矩阵X。

3.创建特殊矩阵

可以直接用函数来生成某些特定的矩阵,以下是常用函数:

eye(n) 创建n*n单位矩阵
eye(m,n) 创建m*n单位矩阵
eye(size(A)) 创建与A维数相同的单位阵
ones(n) 创建n*n全1矩阵
ones(m*n) 创建m*n全1矩阵
one(size(A)) 创建与A维数相同的全1阵
zeros(m*n) 创建n*n全0矩阵
zeros(size(A)) 创建与A维数相同的全0矩阵
rand(n) 在[0,1]区间内创建一个n*n均匀分布的随机矩阵
rand(m*n) 在[0,1]区间内创建一个m*n均匀分布的随机矩阵
rand(size(A)) 在[0,1]区间内创建一个与A维数相同的均匀分布的随机矩阵
compan(P) 创建系数向量是 P的多项式的伴随矩阵
diag(v) 创建一向量v中的元素为对角的对角阵
hilb(n) 创建n*n的Hilbert矩阵
magiic(n) 生成n阶魔方矩阵
sparse(A) 将矩阵A转化为稀疏矩阵形式

实例——生成特殊矩阵

>> zeros(3)

ans =

     0     0     0
     0     0     0
     0     0     0

>> zeros(3,2)

ans =

     0     0
     0     0
     0     0

>> ones(3,2)

ans =

     1     1
     1     1
     1     1

>> ones(3)

ans =

     1     1     1
     1     1     1
     1     1     1

 
>> rand(3)

ans =

    0.8147    0.9134    0.2785
    0.9058    0.6324    0.5469
    0.1270    0.0975    0.9575

>> rand(3,2)

ans =

    0.9649    0.9572
    0.1576    0.4854
    0.9706    0.8003

>> magic(3)

ans =

     8     1     6
     3     5     7
     4     9     2

>> hilb(3)

ans =

    1.0000    0.5000    0.3333
    0.5000    0.3333    0.2500
    0.3333    0.2500    0.2000

>> invhilb(3)

ans =

     9   -36    30
   -36   192  -180
    30  -180   180

>> 

 4.矩阵元素的运算

1.矩阵元素的修改

矩阵中的元素与向量中的元素一样,可以进行抽取引用,编辑修改等操作。

矩阵元素修改命令
命令名 说明
D=[A;B C] A是原矩阵,B,C中包含要扩充的元素,D为扩充后的矩阵
A(m,:)=[] 删除A的第m行
A(:,n)=[] 删除A的第n行
A(m,n)=a;A(m,:)=[a b...];A(:,n)=[a b...] 对A的第m行第n列的元素赋值;对A的第m行的元素赋值;对A的第n列赋值;

实例——新矩阵的生成

修改矩阵元素,创建新矩阵

>> A=[1 2 3;4 5 6];
B=eye(2);
C=zeros(2,1);
D=[A;B C]

D =

     1     2     3
     4     5     6
     1     0     0
     0     1     0

>> 

2.矩阵的变维

可以用符合:法和reshape函数法。reshape函数的调用形式如下:reshape(X,m,n),将已知矩阵变维成m行n列的矩阵。

实例——矩阵维度修改

演示矩阵的维度变换

>> A=1:12;
B=reshape(A,2,6)

B =

     1     3     5     7     9    11
     2     4     6     8    10    12

>> C=zeros(3,4);
C(:)=A(:)

C =

     1     4     7    10
     2     5     8    11
     3     6     9    12

>> 

3.矩阵的变向

矩阵变相命令
Rot(90) 将A逆时针方向旋转90°
Rot(90,K) 将A逆时针方向旋转90°,k可以是正整数或负整数
Fliplr(X) 将X左右翻转
flipud(X) 将X上下翻转
flipdim(X,dim)q dim=1时对行翻转,dim=2时对列翻转

实例——矩阵的变向

>> A=1:12;
C=zeros(3,4);
C(:)=A(:)

C =

     1     4     7    10
     2     5     8    11
     3     6     9    12

>> flipdim(C,1)

ans =

     3     6     9    12
     2     5     8    11
     1     4     7    10

>> flipdim(C,2)

ans =

    10     7     4     1
    11     8     5     2
    12     9     6     3

>>