矩阵

来源:互联网 发布:武汉少儿编程 编辑:程序博客网 时间:2024/04/29 14:26

一、矩阵的生成

矩阵的生成主要有直接输入法、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文件名,则所要输入的大型矩阵就被输入到内存中。



>> abcexm =   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>> datadata =     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:12A =     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>> 


0 0