一、矩阵的生成
矩阵的生成主要有直接输入法、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)
diag(v) 生成一个以向量v为主对角线上的元素向量的矩阵
diag(v,k)
tril(A) 提取矩阵X的主下三角部分(包括主对角线上的元素)
tril(A,k)
triu(A)
triu(A,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
>>