第三部分 矩阵和向量
3.1 基础内容
- 创建简单行向量
①:直接使用中括号和空格或者逗号与元素组合成行向量赋值给变量。
②如果行向量中的元素值等间隔,可以使用首尾元素以冒号间隔来给变量赋值。
此外还可以这样使用:
在中间加入":2",可以规定向量中元素的间隔为2。
③linspace函数创建一个线性间隔的向量;linspace(x,y,n)创建一个包含从x到y的n个值的向量。如果省略n,默认值为100点。例如,下面创建了一个向量,它有5个值,线性分布在3和15之间,包括3和15:
类似地,logspace函数创建一个对数间隔的向量;logspace(x,y,n)创建一个包含从10的x次方到10的y次方的n个值的向量。如果省略n,默认值是50分。例如,logspace(1、4、4)创建一个有四个元素的向量,以对数的方式在10和10的四次方也就是10000之间间隔,或者换句话说,10,100,1000和10000。
④矢量变量也可以使用现有变量创建。例如,这里创建了一个新向量,它首先包含所有来自nv的值,然后是所有来自ls的值:
- 引用和修改向量中元素的方法,以下图中的向量newvac为例:

①直接用向量名加元素的位置
>> newvac(4)
ans =
4
②用向量名和要引用的元素的起始位置夹冒号
>> newvac(3:5)
ans =
3 4 5
③任何向量都可以用于另一个向量的索引,而不仅仅是使用冒号操作符创建的向量。索引不需要是连续的。例如,下面的代码将获得向量 newvec的第1个、第6个和第5个元素:
>> newvec([1 6 5])
ans =
1 6 5
④通过引用还不存在的索引,也可以扩展vector。例如,下面的代码创建了一个有三个元素的vector。然后给第4个元素赋值,将向量扩展为4个元素。
>> rv = [3 55 11]
rv =
3 55 11
>> rv(4) = 2
rv =
3 55 11 2
如果vector的末尾与指定元素之间有间隙,则填充0。例如,下面的代码再次扩展了变量rv:
>> rv(6) = 13
rv =
3 55 11 2 0 13
- 创建列向量
①创建列向量的一种方法是显式地将值放在方括号中,用分号(而不是逗号或空格)分隔:
②没有直接使用冒号操作符来获取列向量的方法。但是,使用任何方法创建的任何行向量都可以转置为列向量。一般来说,矩阵的转置是一个新矩阵,其中的行和列是交换的。对于向量,行向量的转置结果是列向量,而列向量的转置结果是行向量。在MATLAB中,撇号(或单引号)内置为转置运算符。
3.2 创建矩阵变量
1、创建矩阵变量只是对创建行和列向量变量的概括。也就是说,行中的值用空格或逗号分隔,不同的行用分号分隔。例如,矩阵变量mat是通过显式输入值创建的:

2、用冒号和每行等间隔元素的起始值创建矩阵:

3、随机数矩阵可以用rand函数创建。

4、相反,如果传递两个参数,它们将按顺序指定行数和列数。

5、随机整数矩阵可以用randi生成。

-6、 MATLAB也有几个创建特殊矩阵的函数。例如,zeros函数创建一个全为0的矩阵,而ones函数创建一个全为1的矩阵。和rand一样,可以传递一个参数(即行数和列数),也可以传递两个参数(首先是行数,然后是列数)。
注意,函数中没有能只产生元素2,10抑或53,只有0和1!
3.3 矩阵变量中元素的引用和修改
- 1、要引用矩阵元素,行下标和列下标在括号中给出(总是先行后列)。例如,这会创建矩阵变量mat,然后引用mat的第二行、第三列中的值:

- 这叫做下标索引;它使用行下标和列下标。也可以引用一个矩阵的子集。例如,这指的是第一和第二行,第二和第三列:

- 2、对行下标使用一个冒号表示所有行,不管有多少行,而对列下标使用冒号表示所有列。例如,这指的是第一行中的所有列,换句话说,就是整个第一行:

- 3、整个行或列也可以更改。例如,下面的代码将整个第二行替换为使用冒号操作符获得的向量的值。

- 4、矩阵长度和维度的测定:利用MATLAB中的length和size函数来求向量和矩阵的维数。length函数的作用是:返回vector容器中元素的个数。函数的作用是:返回一个向量或矩阵的行数和列数。

- 5、MATLAB还有一个函数numel,它返回任意数组(向量或矩阵)中的元素总数:

- 6.end的使用。
①代表最后一个元素:
②代表最后一行元素:
- 7、改变向量或矩阵的维度的函数:除了转置运算符之外,MATLAB还有几个内置函数可以改变矩阵(在许多情况下是向量)的维度或配置,包括reshape、fliplr、flipud、flip和rot90。
- reshape函数:


- 有几个用于翻转数组的函数。fliplr函数从左到右翻转矩阵(换句话说,最左边的列、第一列、成为最后一列),flipud函数向上翻转到向下。

- rot90函数将矩阵逆时针旋转90度,因此,例如,右上角的值将变成左上角,最后一列将成为第一行。

- 函数repmat可以用来创建一个矩阵;repmat(mat,m,n)创建一个更大的矩阵,由矩阵mat作为元素组成一个m*n的大矩阵。


- 函数repelem按照指定的维度从矩阵中复制每个元素:

- 8、可以使用空方括号创建空向量(不存储值的向量):

- 空向量也可以用来删除向量中的元素。例如,要删除vector中的第三个元素,则将空vector赋给它:

- 向量的子集也可以被删除。例如:

- 不能从矩阵中移除单个元素,因为矩阵必须在每一行中都有相同数量的元素。

但整行或整列可以从矩阵中移除。例如,删除第二列:
