系列文章目录
MATLAB基本功能介绍 链接: link
MATLAB矩阵操作(一) 链接: link
MATLAB数据类型(一)链接: link
一、矩阵重构
MATLAB除了能将多个矩阵合并,还可以对单个矩阵进行行/列的扩展与删除,或进行矩阵旋转、维度变化、元素截取等重构操作。
1 矩阵扩展
如下示例:
>> a=[1 2 3;4 5 6; 7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> a(4,4)=10
a =
1 2 3 0
4 5 6 0
7 8 9 0
0 0 0 10
可以看到,a矩阵原本是一个33的矩阵,通过对a(4,4)赋值,该矩阵维度变为44。
2 矩阵元素删除
基于上面的a矩阵,说明如何进行矩阵元素删除。代码如下:
>> a(:,2)=[] % 将a矩阵的第二列设置为空矩阵
a =
1 3 0
4 6 0
7 9 0
0 0 10
如上,当将矩阵的某一行或列设置为空矩阵后,该行/列将被从矩阵中删除。
3 矩阵重构
有如下几个常用的函数:
>> a=[1 2 3;4 5 6; 7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> b=rot90(a) % 将矩阵a逆时针旋转90度
b =
3 6 9
2 5 8
1 4 7
>> c=reshape(a,[1 9]) % 将矩阵a转换成维度为1行9列的矩阵
c =
1 4 7 2 5 8 3 6 9
>> d=repmat(a,[1 2]) % 将矩阵a按行扩展为1个,按列扩展为2个
d =
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
注:使用reshpe函数时,转换前后矩阵的元素数须一致,否者报错
二、矩阵信息查询
在编写程序时,常常需要查询某个矩阵信息,比如行数、列数、总元素数、各元素数据类型等,以参数化编写整体程序,这就需要我们掌握矩阵信息查询函数。
>> a=[1 2;3 4;5 6]
a =
1 2
3 4
5 6
>> length(a) % 返回矩阵a最长的一维的长度
ans =
3
>> size(a) % 返回矩阵a各维度的长度
ans =
3 2
>> ndims(a) % 返回矩阵维数
ans =
2
>> numel(a) % 返回矩阵总的元素个数
ans =
6
上面的示例主要用于查询矩阵形状信息,除此外,矩阵信息还包括数据类型、数据结构信息。
以下示例为查询数据类型:
>> iscell(a) % 判断矩阵是否为cell数组
ans =
logical
0
>> isreal(a) % 判断矩阵是否为实数数组
ans =
logical
1
>> isinteger(a) % 判断矩阵是否为整数数组
ans =
logical
0
注:可以发现上面程序将矩阵a判断为不是整数数组,这是因为MATLAB默认将数据存为double类型,通过whos命令查询矩阵a可以看到如下信息。若将矩阵a转化为int8等整数类型,再使用isinteger函数判断,则为整数类型。
>> whos a
Name Size Bytes Class Attributes
a 3x2 48 double
>> a=int8(a)
a =
3×2 int8 矩阵
1 2
3 4
5 6
>> isinteger(a)
ans =
logical
1
以下示例为查询数据结构:
>> a=[1 2;3 4;5 6]
a =
1 2
3 4
5 6
>> isempty(a) % 判断矩阵a是否为空
ans =
logical
0
>> isvector(a) % 判断矩阵是否是向量
ans =
logical
0
三、矩阵运算与数组运算
这里通过对比矩阵运算与数组运算,帮助初学者理解并区分两者计算时的不同。MATLAB运用于矩阵上的数学运算符是以线性代数中的矩阵运算法则来计算的,而数组运算时对于两个矩阵中对应元素之间的运算,应明确二者的区别,以防程序编写过程中出错。
以矩阵/数据相乘为例:A*B是按现行代数的矩阵乘法规则计算矩阵A和B的乘积,而A.*B是将两数组对应的元素相乘。如下:
>> A=[1 2;3 4];
>> B=[4 3;2 1];
>> A*B
ans =
8 5
20 13
>> A.*B
ans =
4 6
6 4
总结
本文主要介绍了矩阵操作中关于矩阵重构、矩阵信息查询以及矩阵计算的相关内容,这些内容是使用MATLAB进行数值计算等须掌握的基本技能。