矩阵

一、矩阵的生成

矩阵的生成主要有直接输入法、M文件生成法和文本文件生成法等。

1.直接输入法

从键盘上直接输入矩阵是方便、最常用的创建数值矩阵的方法,尤其适合较小的简单矩阵。在用此方法创建矩阵时,应当注意以下几点:

● 输入矩阵时要以“[ ]”为其标识符号,矩阵的所有元素必须都在括号内;

● 矩阵同行元素之间由空格或逗号分隔,行与行之间用分号或回车键分隔;

● 矩阵大小不需要预先定义;

● 矩阵元素可以是运算表达式;

● 若“[ ]”中无元素表示空矩阵。

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

A =

     1     2     3
     4     5     6
     7     8     9

>> 

2.利用M文件的创建

M文件是一种可以在MATLAB环境下运行的文本文件,它可以分为命令式文件和函数式文件两种。在此处主要用到的命令式M文件,用它的简单形式来创建大型矩阵。

当矩阵的规模比较大,用直接输入法就显得笨拙,出了差错也不易修改。为了解决这些问题,可以利用M文件的特点将所要输入的矩阵按格式先写入一文本文件中,并将此文件以m为其扩展名,即M文件。在MATLAB命令窗口中输入些M文件名,则所要输入的大型矩阵就被输入到内存中。



>> abc

exm =

   123   556   667   445
   221   222   546    10
    66    12    11    15
   126    44    53    33

>> size(exm)%我们可以通过size()函数来获取矩阵的尺寸大小

ans =

     4     4

>> 

3.利用文本创建

MATLAB中的矩阵还可以由文本文件创建,即在文件夹(通常为work文件夹)中建立.txt文件,在命令窗口中直接调用此文件名即可。


>> load data.txt
>> data

data =

     1     1     1
     1     2     3
     1     3     6

>> 

二、矩阵元素的引用

格式                                                         说明

X(m,n)                                               表示矩阵中第m行第n列的元素

X(m,:)                                                表示矩阵中第m行的元素

X(:,n)                                                 表示矩阵中第n列的元素

X(m,n1:n2)                                       表示矩阵中第m行中第n1到n2个元素


三、矩阵元素的修改

命令名                                                            说明

D=[A;B C]                                                A为原矩阵,B、C中包含要扩充的元素,D为扩充后的矩阵

A(:,n)=[]                                                    删除A的第n列

A(m,:)=[]                                                   删除A的第M行

A(m,n)=a                                                 表示对A的第m行第n列的元素赋值

A(m,:)=[a b...]                                          对A的第m行赋值

A(:,n)=[a b...]                                           对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

>> 

三、矩阵的变维

矩阵的变维可以用符号":"法和reshape函数法。reshape函数的调用形式如下:

reshape(X,m,n)将已知矩阵变维成m行n列的矩阵

>> A = 1:12

A =

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

>> B = reshape(A, 2, 6)

B =

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

>> C = zeros(3, 4)     %用“:”法必须先设定修改后矩阵的形状

C =

     0     0     0     0
     0     0     0     0
     0     0     0     0

>> C(:) = A(:)

C =

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

>> 

四、矩阵的变向

命令名                                                      说明 

rot90(A)                                                 将A逆时针方向旋转90度

rot90(A,k)                                              将A逆时针方向旋转90*k度,k可以为正整数或负整数

fliplr(A)                                                   将A左右翻转

flipud(A)                                                 将A上下翻转

flipdim(A, dim)                                     将A关于第dim进行翻转,对于矩阵来说,当dim=1,时对行进行翻转;当dim=2时,对列进行翻转

>> A = [1 2 3; 4 5 6; 7 8 9; 10 11 12]

A =

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

>> flipdim(A, 1)

ans =

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

>> flipdim(A, 2)

ans =

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

>> 

五、矩阵的抽取

对矩阵元素的主要是指对角元素和上(下)三角矩阵的抽取。

命令名                                                                     说明 

diag(A)  抽取主对角线上的元素向量

diag(A,k)           抽取矩阵A的第k条对角线上的元素向量。k为0时抽取主对角线上的元素向量,为正整数时抽取上方第k科对角线上的元素向量,反之亦然

diag(v)                                     生成一个以向量v为主对角线上的元素向量的矩阵

diag(v,k)  生成一个以向量v为第k条对角线上的元素向量的矩阵

tril(A)                                        提取矩阵X的主下三角部分(包括主对角线上的元素)

tril(A,k)  提取矩阵X的第k条对角线下面的部分(包括第k条对角线)

triu(A)  提取矩阵X的主上三角部分(包括主对角线上的元素)

triu(A,k)  提取矩阵X的第k条对角线上面的部分(包括第k条对角线)

>> A = magic(4)

A =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

>> diag(A)

ans =

    16
    11
     6
     1

>> diag(A, 2)

ans =

     3
     8

>> v = [1 2 3]

v =

     1     2     3

>> diag(v)

ans =

     1     0     0
     0     2     0
     0     0     3

>> diag(v, 2)

ans =

     0     0     1     0     0
     0     0     0     2     0
     0     0     0     0     3
     0     0     0     0     0
     0     0     0     0     0

>> tril(A)

ans =

    16     0     0     0
     5    11     0     0
     9     7     6     0
     4    14    15     1

>> tril(A, -1)

ans =

     0     0     0     0
     5     0     0     0
     9     7     0     0
     4    14    15     0

>> triu(A)

ans =

    16     2     3    13
     0    11    10     8
     0     0     6    12
     0     0     0     1

>> triu(A, 1)

ans =

     0     2     3    13
     0     0    10     8
     0     0     0    12
     0     0     0     0

>> 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值