matlab入门基础:矩阵操作(一)
系列笔记目录
第二节:矩阵操作(一):创建特殊矩阵、矩阵的运算
文章目录
- 系列笔记目录
- 前言
- 一、创建特殊矩阵
- 二、矩阵运算
- 1.矩阵元素的修改
- 2.矩阵的变维
- 3.矩阵的变向
- 4. 矩阵的抽取
- 练习
- 三、矩阵的数学运算
- 总结
前言
MATLAB即Matrix Laboratory(矩阵实验室)的缩写,足以证明MATLAB在对矩阵问题进行处理的强大,我们这篇文章主要讲解如何创建特殊矩阵,如何对矩阵进行运算。
一、创建特殊矩阵
| 函数 | 作用 |
|---|---|
| eye(n) | 创建n*n单位矩阵 |
| eye(m,n) | 创建m*n的单位矩阵 |
| eye(size(A)) | 创建与A维数相同的单位矩阵 |
| ones(n) | 创建n*n的全1矩阵 |
| ones(m,n) | 创建m*n全1矩阵 |
| ones(size(A)) | 创建与A维数相同的全1矩阵 |
| zeros(m,n) | 创建m*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 (K) | 创建系数向量是K的多项式的伴随矩阵 |
| diag(v) | 创建以向量v中的元素为对角的对角阵 |
| hilb(n) | 创建n*n的Hilbert矩阵 |
| magie(n) | 生成n阶魔方矩阵 |
| sparse(A) | 将矩阵A转化为稀疏矩阵形式,即由A的非零元素和下标构成稀疏矩阵S。若A本身为稀疏矩阵,则返回A本身。 |
实例:生成特殊矩阵
>> zeros(3)%创建3阶全0矩阵ans =0 0 0 0 0 0 0 0 0 >> zeros(3,2)%创建3行2列的全0矩阵ans =0 0 0 0 0 0 >> ones(3,2)%创建3行2列的全1矩阵ans =1 1 1 1 1 1 >> ones(3)%创建3阶全1矩阵ans =1 1 1 1 1 1 1 1 1 >> rand(3)%创建3*3的随机数矩阵,元素值在区间(0,1)内均匀分布ans =664/815 717/785 408/1465 1298/1433 1493/2361 1324/2421 751/5914 694/7115 338/353 >> format long,rand(3)%用15位表示ans =0.964888535199277 0.957166948242946 0.1418863386272150.157613081677548 0.485375648722841 0.4217612826262750.970592781760616 0.800280468888800 0.915735525189067>> format short,rand(3,2)%5位表示,创建3*2的随机矩阵ans =0.7922 0.03570.9595 0.84910.6557 0.9340>> magic(3)%创建3阶魔方矩阵ans =8 1 63 5 74 9 2>> hilb(3)%创建3阶Hilbert矩阵ans =1.0000 0.5000 0.33330.5000 0.3333 0.25000.3333 0.2500 0.2000>> invhilb(3)%创建3阶Hilbert矩阵的逆矩阵ans =9 -36 30-36 192 -18030 -180 180
二、矩阵运算
1.矩阵元素的修改
| 命令名 | 说明 |
|---|---|
| D=[A;B C] | A为原矩阵,B、C中包含要扩充的元素,D为扩充后的矩阵 |
| A(m,:)=[ ] | 删除A的第m行 |
| A(:,n)=[ ] | 删除A的第n列 |
| 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);%定义2*2的单位矩阵B
>> C=zeros(2,1);%定义2*1的全0矩阵C
>> D=[A;B C]%扩充矩阵D =1 2 34 5 61 0 00 1 0
>> D(2,:)ans =4 5 6>> D(1,2)=9D =1 9 34 5 61 0 00 1 0
2.矩阵的变维
矩阵的变维可以用符号“:”法和reshape()函数法。
函数调用方式:reshape(X,m,n):将已知矩阵X变维成m行n列的矩阵。
实例:矩阵维度改变
> A=1:12;%定义一个行向量
>> B=reshape(A,2,6)%将行向量A变维2行6列B =1 3 5 7 9 112 4 6 8 10 12
>> C=zeros(3,4);%用“:”必须先设定修改后矩阵的形状
>> C(:)=A(:)C =1 4 7 102 5 8 113 6 9 12
3.矩阵的变向
| 命令名 | 说明 |
|---|---|
| rot90(A) | 将A逆时针方向旋转90° |
| rot90(A,k) | k可为正整数或负整数 |
| fliplr(X) | 将X左右翻转 |
| flipud(X) | 将X上下翻转 |
| flipdim(X,dim) | dim=1时对行翻转,dim=2时队列翻转 |
实例:矩阵的变向
>> A=1:12;
>> C=zeros(3,4);%指定修改后矩阵的维度大小
>> C(:)=A(:)%将矩阵A变维为3行4列C =1 4 7 102 5 8 113 6 9 12>> flipdim(C,1)%上下翻转矩阵C的行ans =3 6 9 122 5 8 111 4 7 10>> flipdim(C,2)%左右翻转矩阵C的列ans =10 7 4 111 8 5 212 9 6 3
4. 矩阵的抽取
对矩阵元素的抽取主要是指对角元素和上(下)三角阵的抽取。
| 命令名 | 说明 |
|---|---|
| diag(X,k) | 抽取矩阵X的第k条对角线上的元素向量。k为0时,抽取主对角线线,k为正整数时抽取上方第k条对角线上的元素,k为负整数时抽取下方第k条对角线上的元素 |
| diag(X) | 抽取主对角线 |
| diag(v,k) | 使得v为所得矩阵第k条对角线上的元素向量 |
| diag(v) | 使得v为所得矩阵主对角线上的元素向量 |
| tril(X) | 提取矩阵X的主下三角部分 |
| tril(X,k) | 提取矩阵X的第k条对角线下面的部分(包括第k条对角线) |
| triu(X) | 提取矩阵X的主上三角部分 |
| triumph(X,k) | 提取矩阵X的第k条对角线上面的部分(包括第k条对角线) |
实例:矩阵的抽取操作
>> A=magic(4)%创建4阶魔方矩阵A =16 2 3 135 11 10 89 7 6 124 14 15 1>> V=diag(A,2)%抽取矩阵A第2条对角线上的元素V =38>> tril(A,-1)%抽取矩阵A主对角线下方的元素ans =0 0 0 05 0 0 09 7 0 04 14 15 0>> triu(A)%提取矩阵A的上三角部分ans =16 2 3 130 11 10 80 0 6 120 0 0 1
练习
:创建一个新的矩阵
>> A=[5 1 1 9;1 3 8 1;1 1 3 1;1 1 1 3]%创建一个旧的矩阵AA =5 1 1 91 3 8 11 1 3 11 1 1 3
>> A(:,1)=[]%删除矩阵多余的列元素A =1 1 93 8 11 3 11 1 3
>> A(2,2)=1A =1 1 93 1 11 3 11 1 3>> A(4,3)=-1A =1 1 93 1 11 3 11 1 -1
三、矩阵的数学运算
这个没什么好讲的,直接加减乘除就行了,唯一一个需要注意的就是:
在MATLAB中,矩阵的幂运算需要加‘.’才可以。
>> A.^2ans =1 1 819 1 11 9 11 1 1
求矩阵的逆用函数 inv(X);要求是矩阵必须是方阵才可以。
总结
用MATLAB对矩阵问题进行求解和应用真的非常强大。还有矩阵更新和范数,我打算单独写一篇小文章,进行讲解。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
