Matlab学习01-矩阵

目录

一,矩阵的创建

1,直接输入法创建矩阵

2,利用M文件创建矩阵

3,利用其它文本编辑器创建矩阵

二,矩阵的拼接

1,基本拼接

[1) 水平方向的拼接](#1) 水平方向的拼接)

2)垂直方向的拼接

3)拼接函数

三,矩阵的寻访

1,下标寻访(全下标方式)

2,单元素寻址(单下标方式)

3,多元素寻址


矩阵是进行数据处理和运算的基本元素。

一,矩阵的创建

矩阵的创建主要有四种方法:直接输入法,利用M文件创建矩阵,利用其它文本编辑器建立矩阵,利用matlab内置函数建立矩阵。

1,直接输入法创建矩阵

直接输入法:直接从键盘输入矩阵的元素。

将矩阵的元素用方括号 括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号 隔开,不同行的元素之间用分号 或回车符分隔。如下创建三行两列的矩阵👇

Matlab 复制代码
Matrix=[1,2;3,4;5,6] 

也可以使用matlab的系统内置特殊函数来创建矩阵,如下👇

1)使用zeros函数,创建元素全部为0的矩阵

2)使用ones函数,创建元素全部为1的矩阵

3)使用eye函数,创建单位矩阵,单位矩阵是方阵,行和列的数量必须相等

4)使用rand函数,创建在(0,1)区间均匀分布的随机矩阵

5)使用randn函数,创建均值为0,方差为1的标准正态分布随机矩阵

6)使用hilb函数,创建Hilbert希尔伯特矩阵(方阵)

7)使用magic函数,创建魔法矩阵(方阵)

2,利用M文件创建矩阵

利用M文件创建矩阵:使用系统自带的文本编辑调试器专门建立一个M文件。

如下,如果当前界面没有文本编辑器的窗口↓

在命令行中输入edit,并回车↓

之后在m文件中编写代码,输入待建矩阵(三行两列)↓

Matlab 复制代码
Matrix=[1,2;3,4;5,6]  

保存m文件的时候,不能和里面的变量名一样,不然无法识别。

接着,在matlab命令行窗口中输入包含矩阵的m文件的文件名,就可以自动创建一个名为m_Matrix的矩阵,可供以后使用。因此,如果遇到矩阵比较大,不想重复创建的话,建议使用这种方式创建矩阵。

因为我习惯性在每个语句的结束位置加上分号,所以当我输入m_Matrix后,没有矩阵输出↓

这个时候只需要将分号去掉即可↓

3,利用其它文本编辑器创建矩阵

利用其它文本编辑器创建矩阵: 例如编辑一个文本文件。

在记事本中输入:

html 复制代码
16.0 3.0 2.0 9.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0

编辑好之后 ctrl+s 保存(这里留了一个小坑)

再回到matlab命令行窗口输入命令: load t_Matrix.txt,会报错↓

之所以报错,是因为在matlab工具箱的搜索路径里面没有txt目录(也就不会有在txt目录下的t_Matrix.txt文件),这个时候有两个方法解决,一个是只添加txt路径,另外一个是添加整个自建matlab工程所在的目录。这里我为了后期方便,直接添加整个目录(包含下面的子目录)↓。

之后就会将自创的matlab目录下的全部子文件加载到matlab软件的搜索路径下↓

再重新输入命令:

html 复制代码
 load t_Matrix.txt

这次没有报错,在工作区可以看到t_Matrix的文件中的矩阵大小:(四行四列)

【当加载的文件过多并且开始杂乱的时候,可以在matlab命令行窗口输入clear清空工作区,清空之后如果还想用,就得需要重新加载】

之后在matlab命令行窗口输入加载进去的文件名t_Matrix,如下👇所示

可以看到在M编辑器窗口参看文件的结构及数据排列。

二,矩阵的拼接

两个或者是两个以上的单个矩阵,按一定的方向进行链接生成新的矩阵,就是矩阵的拼接。

矩阵的拼接是一种创建矩阵的特殊方法,它的基础元素是原始矩阵

1,基本拼接

矩阵的拼接有水平方向的拼接和垂直方向的拼接。

1) 水平方向的拼接

水平方向的拼接语法:

新矩阵名=[参与拼接的矩阵1**,** 参与拼接的矩阵2] 或新矩阵名=[参与拼接的矩阵1参与拼接的矩阵2]

可以看到,在对矩阵进行水平方向的结构操作时,都是默认使用逗号或者是空格隔开,和之前学习的创建矩阵一样。

设参与拼接的两个矩阵,其中一个矩阵为,另外一个矩阵为,则新生成的矩阵为,即新矩阵的列数是两个原矩阵的列数相加,行数不变。

【注意】:要串联的数组的维度必须一致,对于水平方向的拼接来说,只需要将两个原矩阵的行数设置一样就行,列数无要求,可多可少。

如下,将矩阵matrix1和矩阵matrix2进行水平拼接,得到新的矩阵,如下👇

2)垂直方向的拼接

垂直方向的拼接语法:

新矩阵名=[参与拼接的矩阵1**;**参与拼接的矩阵2] % 推荐这种方法进行拼接

或 新矩阵名=[参与拼接的矩阵1

参与拼接的矩阵2]

可以看到,在对矩阵进行垂直方向的结构操作时,都是默认使用分号或者是回车键隔开,和之前学习的创建矩阵一样。

设参与拼接的两个矩阵,其中一个矩阵为,另外一个矩阵为,则新生成的矩阵为,即新矩阵的行数是两个原矩阵的列数相加,列数不变。

【注意】:要并联的数组的维度必须一致,对于垂直方向的拼接来说,只需要将两个原矩阵的列数设置一样就行,行数无要求,可多可少。

如下,将矩阵matrix1和矩阵matrix2进行垂直方向拼接,得到新的矩阵,如下👇

3)拼接函数

在matlab中,除了使用矩阵拼接符 外,还可以使用矩阵拼接函数来拼接矩阵。

|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| horzcat | 水平拼接 |
| vertcat | 垂直拼接 |
| cat | 指定维数拼接 可以看到,cat函数有两种不同的参数列表,一个是只有两个矩阵进行拼接,另外一个是多个矩阵进行拼接。现以第一个为例(只有两个矩阵进行拼接),当dim输入不同,拼接的方法也会不同: * dim=1,沿垂直方向上对两个矩阵进行拼接。 * dim=2,沿水平方向上对两个矩阵进行拼接。 * dim=3,三维矩阵 |
| repmat | 通过对现有矩阵的复制和粘贴操作拼接 |
| blkdiag | 现有矩阵构造一个块对角矩阵 |
| | |
[matlab中的矩阵拼接函数]

cat函数的dim=3时,对应的效果如下👇( matrix1=ones(3,2),matrix2=zeros(3,2))

其它函数现在暂时用不到,之后遇到了再来补充。如果有兴趣的可以自行去了解并学习。

三,矩阵的寻访

在matlab中,矩阵的寻访主要有:下标寻访,单元素寻访,多元素寻访。

1,下标寻访(全下标方式)

matlab中矩阵的下标表示与常用的数学习惯相同:使用分别表示行和列的"双下标",矩阵中的元素都有对应的第几行,第几列。这种表示方法简单直观,几何概念比较清晰。

例如我有一个矩阵:

如果我想要输出矩阵的第三行第二个元素:6,那么我就需要写上矩阵的名字matrix加上小括号,小括号里面传入行的序号和列的序号(第一行第一列用(1,1)表示),因此输出元素6的语句如下:

2,单元素寻址(单下标方式)

单元素寻址就是将矩阵看成一维的向量(扁平化)。依旧是之前的矩阵:

如果我想要取出元素6,使用单下标的方式,就是矩阵名加上小括号,小括号内输入元素6横着数的序号6:

当矩阵数据较多,不能在较短时间内通过序号数到所要找的元素时,推荐通过行和列的表达式来找到对应元素的序号。假设一个矩阵为(M行N列),要找到第 行第列元素的序号

例如,我有一个十三行十列的矩阵

个元素,元素从1开始并递增(主要是为了方便查看计算结果是否正确)。

Matlab 复制代码
% 创建一个包含从 1 到 130 的向量
data = 1:130
% 将向量重塑为 13 行 10 列的矩阵
matrix = reshape(data, 13, 10)

如果我要使用单下标的方式找到第十二行,第五列的元素64

那么,通过表达式可知:

所以元素64在扁平化的一维向量中的第64位。编写语句:matrix(64)

就可以通过单下标找到对应的元素。

再举一个矩阵的例子

Matlab 复制代码
matrix1=[1,2,3,4,5,6,7,8,9,10,11,12,13;14,15,16,17,18,19,20,21,22,23,24,25,26;27,28,29,30,31,32,33,34,35,36,37,38,39] 

要找到第二行第五列的元素18,对应的序号

通过单下标寻址得到元素 18 ↓

3,多元素寻址

多元素寻址的语法:

矩阵名[ 预查找行的起始位**:** 预查找行的结束位 预查找列的起始位**:** 预查找列的结束位**]**

例如我有一个三行十列的矩阵:
接下来通过矩阵多元素寻址,包括寻址该矩阵的

  • 某一行或某一列的若干元素;
    ① 第二行的第三,四,五列的元素。行只需要一个数,列的位置放置两个数并用冒号分隔。

    ② 第二列的第一,二,三行的元素

  • 访问整行,整列元素;
    ①整个第二行

    ②整个第二列

  • 访问若干列和若干行的元素;
    ① 例如访问第二,四,六列的元素

    ※起始位和结束位中间的数是步长⭐,表示每两步取一组数。※

    ① 例如访问第一,二,三行的元素

  • 访问矩阵所有元素

有问题请在评论区留言或者是私信我,回复时间不超过一天。

相关推荐
海的诗篇_14 分钟前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
曹勖之23 分钟前
UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误
matlab·ue5·机器人
AgilityBaby23 分钟前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby24 分钟前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
武昌库里写JAVA2 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
一弓虽3 小时前
git 学习
git·学习
曹勖之3 小时前
simulink有无现成模块可以实现将三个分开的输入合并为一个[1*3]的行向量输出?
matlab
Moonnnn.5 小时前
【单片机期末】串行口循环缓冲区发送
笔记·单片机·嵌入式硬件·学习
viperrrrrrrrrr76 小时前
大数据学习(131)-Hive数据分析函数总结
大数据·hive·学习
fen_fen6 小时前
学习笔记(26):线性代数-张量的降维求和,简单示例
笔记·学习·算法