Matlab学习01-矩阵

目录

一,矩阵的创建

1,直接输入法创建矩阵

2,利用M文件创建矩阵

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

二,矩阵的拼接

1,基本拼接

1) 水平方向的拼接

2)垂直方向的拼接 

3)拼接函数 

三,矩阵的寻访

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

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

3,多元素寻址


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

一,矩阵的创建

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

1,直接输入法创建矩阵

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

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文件中编写代码,输入待建矩阵(三行两列)↓

Matrix=[1,2;3,4;5,6]  

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

接着,在matlab命令行窗口中输入包含矩阵的m文件的文件名,就可以自动创建一个名为m_Matrix的矩阵,可供以后使用。因此,如果遇到矩阵比较大,不想重复创建的话,建议使用这种方式创建矩阵。
因为我习惯性在每个语句的结束位置加上分号,所以当我输入m_Matrix后,没有矩阵输出↓

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

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

利用其它文本编辑器创建矩阵:例如编辑一个文本文件。
在记事本中输入:

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软件的搜索路径下↓

再重新输入命令:

 load t_Matrix.txt



这次没有报错,在工作区可以看到t_Matrix的文件中的矩阵大小:4\times4(四行四列)
【当加载的文件过多并且开始杂乱的时候,可以在matlab命令行窗口输入clear清空工作区,清空之后如果还想用,就得需要重新加载】
之后在matlab命令行窗口输入加载进去的文件名t_Matrix,如下👇所示

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

二,矩阵的拼接

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

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

1,基本拼接

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

1) 水平方向的拼接

水平方向的拼接语法:

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

C=[A,B] 或  C=[A\, B]

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

设参与拼接的两个矩阵,其中一个矩阵为M_{a} \times N_{a},另外一个矩阵为M_{b} \times N_{b},则新生成的矩阵为M_{a} \times (N_{a}+N_{b}),即新矩阵的列数是两个原矩阵的列数相加,行数不变。
【注意】:要串联的数组的维度必须一致,对于水平方向的拼接来说,只需要将两个原矩阵的行数设置一样就行,列数无要求,可多可少。

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

2)垂直方向的拼接 

垂直方向的拼接语法:

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

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

参与拼接的矩阵2] 

C=[A;B] 

  或C=[A

B]

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

设参与拼接的两个矩阵,其中一个矩阵为M_{a} \times N_{a},另外一个矩阵为M_{b} \times N_{b},则新生成的矩阵为(M_{a}+M_{b}) \times N_{a},即新矩阵的行数是两个原矩阵的列数相加,列数不变。
【注意】:要并联的数组的维度必须一致,对于垂直方向的拼接来说,只需要将两个原矩阵的列数设置一样就行,行数无要求,可多可少。

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

 

3)拼接函数 

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

matlab中的矩阵拼接函数
horzcat水平拼接
vertcat垂直拼接
cat指定维数拼接

可以看到,cat函数有两种不同的参数列表,一个是只有两个矩阵进行拼接,另外一个是多个矩阵进行拼接。现以第一个为例(只有两个矩阵进行拼接),当dim输入不同,拼接的方法也会不同:

  • dim=1,沿垂直方向上对两个矩阵进行拼接。
  • dim=2,沿水平方向上对两个矩阵进行拼接。
  • dim=3,三维矩阵
repmat通过对现有矩阵的复制和粘贴操作拼接
blkdiag现有矩阵构造一个块对角矩阵

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

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

三,矩阵的寻访

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

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

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

例如我有一个矩阵:

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

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

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

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

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

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

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

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

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

那么,通过表达式可知:sn=(n-1)*M+m=(5-1)*13+12=64

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

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

再举一个矩阵的例子

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,对应的序号sn=(n-1)\times M+m=(5-1)\times 3+2=14
 

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

3,多元素寻址

多元素寻址的语法:

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

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

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

    ② 第二列的第一,二,三行的元素
  • 访问整行,整列元素;
    ①整个第二行

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

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

    ① 例如访问第一,二,三行的元素
  • 访问矩阵所有元素

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/57596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录:网鼎杯2024赛前热身WEB01

目录扫描,发现上传点,判断可能存在文件上传漏洞,并根据文件后缀判断网站开发语言为php 编写蚁剑一句话木马直接上传 蚁剑连接 这里生成 的flag是随机的,因为烽火台反作弊会随机生成环境,在一顿查找后,在hom…

stm32F103 实现呼吸灯效果

目录 硬件连接 软件实现步骤 初始化系统时钟。 配置 GPIO 引脚。 配置定时器以生成 PWM 信号。 在主循环中调整 PWM 占空比以实现呼吸效果。 示例代码 1. 初始化系统时钟 2. 配置 GPIO 引脚 3. 配置定时器以生成 PWM 信号 4. 在主循环中调整 PWM 占空比以实现呼吸效…

5G RedCap工业路由器赋能电力物联网应用

随着5G轻量化技术应用的推进,5G RedCap旨在提供低功耗、低成本、广覆盖等功能特点赋能电力智能化升级。特别适用于工业物联网、低空经济、车联网、消费电子和轻量级5G的需求。 5G RedCap工业路由器的特点 低功耗:5G RedCap工业路由器通过节能技术&#…

npm run serve 提示异常Cannot read property ‘upgrade‘ of undefined

npm run serve 提示Cannot read property ‘upgrade’ of undefined 一般是proxy的target代理域名问题导致的,如下: 解决方案: proxy: { “/remoteDealerReportApi”: { target: ‘http://demo-.com.cn’, //此域名有问题,会导致…

PTA数据库编程练习合集

10-1 查询重量在[40,65]之间的产品信息 本题目要求编写SQL语句&#xff0c; 检索出product表中所有符合40 < Weight < 65的记录。 提示&#xff1a;请使用SELECT语句作答。 表结构: CREATE TABLE product (Pid varchar(20), --商品编号PName varchar(50), --商品名…

JavaWeb开发7

前后端混合开发 沟通成本高 分工不明确 不便管理 不便维护扩展 前后端分离开发 前端--接口--后端 需求分析--接口定义--前后端并行开发--测试--前后端连调测试 前端开发 模块化 JS、CSS 组件化 UI结构、样式、行为 规范化 目录结构、编码、接口 自动化 构建、部署、…

Git_IDEA集成GitHub

Git_IDEA集成GitHub 设置 GitHub 账号 分享工程到 GitHub push 推送本地库到远程库 pull 拉取远程库到本地库 clone 克隆远程库到本地 设置 GitHub 账号 去 GitHub 账户上设置 token 因为网络原因用账号密码可能登不上&#xff0c;所以选择用口令。 分享工程到 GitHub…

网络安全领域推荐证书介绍及备考指南

在网络安全领域&#xff0c;拥有专业认证不仅可以证明个人的专业能力&#xff0c;还能帮助在实际工作中应用先进的技术和知识。以下是几种热门的网络安全证书介绍及备考指南。 1. OSCP (Offensive Security Certified Professional) 证书简介 OSCP是针对渗透测试领域的入门级…

Matlab 疲劳驾驶检测

课题介绍 该课题为基于眼部和嘴部的疲劳驾驶检测。带有一个人机交互界面GUI&#xff0c;通过输入视频&#xff0c;分帧&#xff0c;定位眼睛和嘴巴&#xff0c;通过眼睛和嘴巴的张合度&#xff0c;来判别是否疲劳。 二、操作步骤 第一步&#xff1a;最好电脑安装的是MATLAB …

Jmeter 实战 JDBC配置

​ JDBC JDBC&#xff08;Java Database Connectivity&#xff09;是一种用于执行SQL语句的Java API。通过这个API&#xff0c;可以直接连接并执行SQL脚本&#xff0c;与数据库进行交互。 使用JMeter压力测试时&#xff0c;操作数据库的场景 在使用JMeter进行接口压力测试时…

全栈面试题】模块3-9】JavaSE高级 -- Object类、 GC、反射、Socket

目录 面试题3.62 JAVA中Object类中有哪些常用方法&#xff1f; 面试题3.63 什么是深拷贝和浅拷贝 面试题3.64 GC是什么? 为什么要有GC? 面试题3.65 JVM垃圾回收机制和常见算法 面试题3.66 简单的介绍⼀下强引用&#xff0c;软引用&#xff0c;弱引用&#xff0c;虚引用 …

基于SSM消防物资存储系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;仓库管理&#xff0c;物资入库管理&#xff0c;仓位管理&#xff0c;物资详情管理&#xff0c;报警通知管理&#xff0c;安全检查提醒管理 用户账号功能包括&#xff1a;系统首页…

【数据分享】全国能源-电力平衡表(2000-2020年)

数据介绍 一级标题指标名称单位能源电力可供量亿千瓦小时能源电力生产量亿千瓦小时能源水电生产电力量亿千瓦小时能源火电生产电力量亿千瓦小时能源核电生产电力量亿千瓦小时能源风电生产电力量亿千瓦小时能源电力进口量亿千瓦小时能源电力出口量亿千瓦小时能源电力能源消费总量…

从零到一:如何使用直播美颜SDK开发视频美颜平台

今天&#xff0c;小编将为大家详细讲解如何从零开始&#xff0c;利用直播美颜SDK进行开发视频美颜平台。 一、了解直播美颜SDK 选择合适的SDK是开发视频美颜平台的第一步&#xff0c;市场上有多种SDK可供选择。选择时应考虑SDK的功能、性能、稳定性以及开发者社区的支持。 二…

[实时计算flink]本地运行和调试包含连接器的作业

本文为您介绍如何在开发者本地环境中运行和调试包含阿里云实时计算Flink版连接器的作业&#xff0c;以便快速验证代码的正确性&#xff0c;快速定位和解决问题&#xff0c;并节省云上成本。 背景信息 当您在IntelliJ IDEA中运行和调试Flink作业&#xff0c;如果其包含了阿里云…

Psychophysiology:脑-心交互如何影响个体的情绪体验?

摘要 情绪的主观体验与对身体(例如心脏)活动变化的情境感知和评估相关。情绪唤醒增加与高频心率变异性(HF-HRV)降低、EEG顶枕区α功率降低以及心跳诱发电位(HEP)振幅较高有关。本研究使用沉浸式虚拟现实(VR)技术来研究与情绪唤醒相关的脑心相互作用&#xff0c;以实现自然而可…

Linux中如何理解一切皆文件

根据之前的学习我们会有一些少许的疑惑&#xff0c;我们的stdin &#xff0c;stdout&#xff0c;stderr访问的是键盘显示器&#xff0c;然而键盘显示器等他们都有一个共同的特点就是他们都是外设&#xff0c;那么这些外设是怎么被看成是文件的呢&#xff1f; 看图可以知道硬件的…

干货分享篇-那些你必须知道的CE认证

CE认证&#xff0c;为各国产品在欧洲市场进行贸易提供了统一的技术规范&#xff0c;简化了贸易程序。任何国家的产品要进入欧盟、欧洲自由贸易区必须进行CE认证&#xff0c;在产品上加贴CE标志。因此CE认证是产品进入欧盟及欧洲贸易自由区国家市场的通行证。 一、申请CE认证的必…

记一次有趣的发现-绕过堡垒机访问限制

前言 在某一次对设备运维管理的时候&#xff0c;发现的某安全大厂堡垒机设备存在绕过访问限制的问题&#xff0c;可以直接以低权限用户访问多个受控系统&#xff0c;此次发现是纯粹好奇心驱使下做的一个小测试压根没用任何工具。因为涉及到了很多设备和个人信息&#xff0c;所以…

云轴科技ZStack信创云平台助力上海科技大学实现信创业务落地

编者按 上海科技大学基于“兆芯CPU芯片 云轴科技 ZStack信创云平台 麒麟V10操作系统”构建了全栈信创的校级云平台——上科大Ecloud平台&#xff0c;该平台支撑了上海科技大学的办公业务、教学业务、核心生产业务等业务系统&#xff0c;实现了从VMware平台向国产化软硬件平台的…