文章目录
前言
我们知道MATLAB的全名是MATrix LABoratory,可见AMTLAB的初衷是为了矩阵运算而生的;即便是常数,也可以把它当成1*1的矩阵来看待,MATLAB也同样擅长处理常数的运算。数组与矩阵是非常相似的,向量也就是一维数组,矩阵也就是二维数组,但是在MATLAB中,数组和矩阵的运算是截然不同的,这点必须要弄清楚!
一、数组
数组是一系列元素的组合,其在MATLAB中,外观上与矩阵毫无差异,但它们却代表了完全不同的两种变量。数组也具有行和列的概念,但数组间的运算通常上元素间的运算,而矩阵不同,矩阵是一个整体,起运算规则需按照线性代数的规则进行。数组和矩阵的运算差异主要体现在运算符上,注意是元素间的运算还是整体间的运算。
二、向量
构造向量的方法:① 直接构造法;② 增量法;③ linspace/logspace函数法;
① 直接构造法:如下图,中间用逗号或者空格都是一样的;
② 增量法:如下图,向量A是0到5,增量为1的行向量;向量B是0到6,增量为2的行向量;
③ linspace/logspace函数法:用linspace函数构造向量,需要指定首尾值和元素个数;基本形式是x = linspace(first,last,num),其中first,last和num分别代表首尾元素和元素个数。
用logspace函数构造向量,需要指定首尾值和元素个数;x = logspace(first,last,num),其中首尾值大小为10^first和10^last,默认时num = 50;
三、矩阵
3.1、矩阵的创建方法
① 简单的创建方法:直接写矩阵,不同列直接用空格或者逗号隔开,不同行用分号隔开;
② meshgrid函数创建矩阵:
语法格式为:[X,Y] = meshgrid(x,y) 注:x和y表示行向量和列向量
[X,Y] = meshgrid(x)
[X,Y,Z] = meshgrid(x,y,z)
[X,Y,Z] = meshgrid(x)
③ 构造特殊矩阵:MATLAB提供了多个构造特殊矩阵的函数,分别有:
① ones :创建一个所有元素都为1的矩阵;
② zeros :创建一个所有元素都为0的矩阵;
③ eye :创建对角线为1,其余元素为0的矩阵;
④ accumarray :将输入矩阵的元素分配到输出矩阵中的指定位置;
⑤ diag :根据矢量创建对角矩阵;
⑥ magic :创建一个魔方矩阵,其中行、列和对角线上元素和相等;
⑦ rand :创建一个矩阵或者数组,其中的元素为服从均匀分布的随机数;
⑧ randn :创建一个矩阵或者数组,其中的元素为服从正态分布的随机数;
⑨ randperm :创建一个矢量(1*n的矩阵);
④ 聚合矩阵:聚合矩阵是通过连接一个或者多个矩阵来形成的新的矩阵。符号[]不仅是矩阵构造符号,也是MATLAB平台聚合运算符。如C = [A B]表示在水平方向上聚合矩阵A和B,C = [A;B]表示在垂直方向上聚合矩阵A和B;
⑤ 构建三维矩阵:
3.2、矩阵的变换
① reshape函数:如reshape(M,2,6),以M矩阵为基准,按照列排列,创建一个2行6列的矩阵;注意用reshape函数生成矩阵,必须要求两个矩阵的元素数量是相同的,这里M是3行4列矩阵,共12个元素,reshape生的2行6列的矩阵也是12个元素。
② flip函数:矩阵翻转,可以上下翻转,也可以左右翻转;filpud是上下翻转,filplr是左右翻转。
③ rot函数:如rot90(M),表示将矩阵M逆时针旋转90度;
④ repmat函数:如repmat(A,2,3),表示复制矩阵A,行向量上复制2次,列向量上复制3次;
⑤ diff函数:求差值,后一位元素减去前一位元素的差值;
3.3、矩阵的运算
矩阵与数组运算是不相同的,数组强调的是元素间的对于运算,而矩阵是采用线性代数的运算规则来进行的,矩阵是一个整体,运算时也必须当成一个整体来进行。为了更加了解矩阵与数组之间运算的差异,可以根据运算符的不同来辨别。
数组 |
+ |
- |
.* |
.\ |
./ |
.^ |
.’ |
矩阵 |
+ |
- |
* |
\ |
/ |
^ |
‘ |
意义 |
相加 |
相减 |
相乘 |
右除 |
左除 |
乘方 |
转置 |
根据这个表格可以看出,数组与矩阵的运算除了加、减的符号相同外,其余的都不同,我们可以根据运算符号来辨别该变量是数组还是矩阵,同时自己在编程时也需注意,不要弄错了。
除了矩阵的运算以外,还有一个数组内的运算,分别有:
例如v=[-5 1 5 -3],那么
① min(v) :求这个数组中的最小元素,返回 -5;
② max(v):求这个数组中的最大元素,返回 5;
③ sign(v):取这个数组中元素的符号,返回 -1 1 1 -1;
④ sum(v):求数组中元素的和,返回 -5+1+5-3 = -2;
⑤ abs(v):求数组中元素的绝对值,返回 5 1 5 3;
⑥ prod(v):求数组中元素的乘积,返回 -5*1*5*(-3)= 75;
总结
以上就是我今天所学的内容了,主要是关于向量和矩阵的一些内容,包括了向量和矩阵在MATALB中的创建方法,矩阵的变换以及运算等,用到的函数命令较多,还需慢慢消化,大家共同加油!!!