Matlab教程004:Matlab矩阵的拼接重构重排以及矩阵的运算

文章目录

      • 1.4.3 矩阵的拼接重构重排
        • 1.4.3.1 横向拼接
        • 1.4.3.2 纵向拼接
        • 1.4.3.3 矩阵的重构重排
      • 1.4.4 矩阵的运算
        • 1.4.4.1 算数运算
        • 1.4.4.2 矩阵加减
        • 1.4.4.3 矩阵乘法
        • 1.4.4.4 矩阵转置

1.4.3 矩阵的拼接重构重排

image-20250325164644713

1.4.3.1 横向拼接

A和B的行数相同,那么使用[A,B][A B]以及cat(2,A,B)都能将A和B横向拼接成一个大的矩阵。

B = [1:4;2:5;3:6;];
C = ones(3,2);
D = [B,C];
D2 = cat(2,B,C);
% 打印结果
D2 =1     2     3     4     1     12     3     4     5     1     13     4     5     6     1     1
1.4.3.2 纵向拼接

A和B的列数相同,那么使用[A;B]以及cat(1,A,B)都能将A和B以纵向拼接为一个大的矩阵。

% 纵向拼接
B2 = ones(2,4);
% 方式1
D3 = [B;B2];
% 方式2
D4 = cat(1,B,B2)
% 打印结果
D3 =1     2     3     42     3     4     53     4     5     61     1     1     11     1     1     1
1.4.3.3 矩阵的重构重排

(1)reshape函数:更改矩阵的形状,reshape(A,m,n)或者reshape(A,[m,n])

A = randi(10,2,6);
A
B = reshape(A,3,4);
B% 打印结果
A =3    10    10    10     6     31     7     2     8     5     8B =3     7    10     51    10     8     310     2     6     8

(2)sort函数:对向量或者矩阵进行排序,sort(A,dim),在最后面加一个输入参数descend,变成从大到小的降序排列

  • dim=1时,沿着行方向(从上至下)对矩阵的每一列升序排列。
  • dim=2时,沿着列方向(从左至右)对矩阵的每一列升序排列。
A = randi(10,2,6);
A
sort(A,1)
% 输出结果
A =9     7     5     9     4     36    10     1     7    10     7ans =6     7     1     7     4     39    10     5     9    10     7% 按照每一行进行单独排序
sort(A,2)
% 排序结果
ans =2     5     6     7     8     91     2     2     4     4     8% 降序排列
sort(A,2,'descend')
ans =10    10     7     4     4     18     7     3     3     2     1

(3)sortrows函数:基于矩阵的某一列对矩阵进行排序,同一行的元素不会改变。sortrows(score,列),在最后面加一个输入参数descend,变成从大到小的降序排列。

sortrows(A,2,"descend")ans =5     9     1     1    10    103     3    10     6     9     1

1.4.4 矩阵的运算

1.4.4.1 算数运算
函数名函数的作用
sum求和函数
prod求乘积函数
cumsum计算累积和
diff计算差分
mean计算平均值
median计算中位数
mode计算众数
var计算方差
std计算标准差
min求最小值
max求最大值

如下是函数的几个例子:

%% 矩阵运算
clear;
clc;
A = randi(10,3,4);
A
sum(A,1) %参数为1的时候,计算每一列的和
sum(A,2) % 计算每一行的和
sum(A(:))
sum(A,'all')prod(A(:))
prod(A,"all")% 运算结果
A =2     6     9     24     5     5     41    10     9    10ans =7    21    23    16ans =191830ans =67ans =67ans =77760000ans =77760000
1.4.4.2 矩阵加减

(1)矩阵加法(+)

矩阵加法是 对应位置的元素相加,要求两个矩阵的大小相同。

示例:

A = [1 2; 3 4];
B = [5 6; 7 8];
C = A + B  % 逐元素相加

结果:

C =6     810    12

(2)矩阵减法(-)

矩阵减法与加法类似,是对应元素相减,要求两个矩阵大小相同。

示例:

A = [10 20; 30 40];
B = [1 2; 3 4];
C = A - B  % 逐元素相减

结果:

C =9    1827    36

(3)标量与矩阵的加减

如果是一个 标量矩阵 进行加法或减法,则标量会与矩阵的 每个元素 进行运算。

示例:

A = [1 2; 3 4];
C = A + 10  % 每个元素加 10
D = A - 5   % 每个元素减 5

结果:

C =11    1213    14D =-4    -3-2    -1

(4)矩阵与相同列数的行向量

如果一个是矩阵A,另外一个是具有相同列数的行向量B,则把B堆叠成完全相同的两行,然后再和A相加。

示例:

A = 3 5 66 9 4
B = 3 9 6

结果:

ans =6    14    129    18    10

(5)矩阵与相同行数的列向量

如果一个是矩阵A,另外一个是具有相同行数的列向量B,则把B堆叠成完全相同的三列,然后再和A相加。

示例:

A = 3 6 52 6 8
B = 65

结果:

ans =9 12 117 11 13

(6)列向量和行向量相加

如果一个是列向量,另外一个是行向量

示例:

A = 25
B = 1 8 3

结果:

ans =3    10     56    13     8
1.4.4.3 矩阵乘法

MATLAB 提供了 两种 矩阵乘法方式:

  1. 矩阵乘法(\* —— 线性代数中的矩阵乘法(点积)。
  2. 逐元素乘法(.\* —— 对应元素相乘。

(1)矩阵乘法遵循线性代数规则,即:

  • A 的列数 必须等于 B 的行数m×n 矩阵 × n×p 矩阵 → m×p 矩阵)。
  • 计算方式是 行与列的点积

示例:

A = [1 2; 3 4];  % 2×2 矩阵
B = [5 6; 7 8];  % 2×2 矩阵
C = A * B;       % 进行矩阵乘法

计算步骤:

image-20250326221650801

计算结果:

C =19    2243    50

(2)逐元素乘法(.*

逐元素乘法是 对应位置的元素相乘,要求矩阵大小相同。

示例:

A = [1 2; 3 4];
B = [5 6; 7 8];
C = A .* B;  % 逐元素乘法

计算方式:

image-20250326221825973

计算结果:

C =5    1221    32
1.4.4.4 矩阵转置

在 MATLAB 中,矩阵的转置(Transpose)可以使用 '(单引号)transpose() 函数实现。矩阵转置的作用是将行变为列,列变为行。

(1)使用A'进行矩阵转置

最常用的方法是使用 '(单引号),它会执行 共轭转置(conjugate transpose),即:

  • 实数矩阵A' 只是 单纯的转置
  • 复数矩阵A'转置取共轭(虚部变号)。

示例1:实数矩阵转置

A = [1 2 3; 4 5 6]; % 2×3 矩阵
B = A';             % 3×2 矩阵
disp(B);

计算方式:

image-20250326222131313

转置后:

1     4
2     5
3     6

(2)使用 transpose(A)

MATLAB 也提供了 transpose(A) 函数,它 仅执行转置,不改变复数矩阵的虚部符号。

示例:

A = [1 2 3; 4 5 6];
B = transpose(A);
disp(B);

结果:

1     4
2     5
3     6

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

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

相关文章

Python小练习系列 Vol.3:生成有效括号组合(回溯 + DFS)

🧠 Python小练习系列 Vol.3:生成有效括号组合(回溯 DFS) 👋 本期我们来刷一道 LeetCode 热门经典题,借此掌握回溯算法的精髓 —— 生成有效括号组合,是学习递归 & DFS 的黄金题型&#xff…

实战经验深度解析 | 博睿数据制造行业精选案例集发布!

近年来,我国制造业加速迈向高端化、智能化、绿色化,为经济高质量发展注入新动能。放眼全球,制造业正加速数字化、智能化转型,5G、人工智能、边缘计算等技术与生产全流程深度融合,有力推动柔性化生产与产业链协同创新发…

[创业之路-344]:战略的本质是选择、聚焦, 是成本/效率/低毛利优先,还是差易化/效益/高毛利优先?无论是成本优先,还是差易化战略,产品聚焦是前提。

前言: 一、战略的本质是选择、聚焦 关于战略的本质,触及了商业竞争的核心矛盾:选择成本优先(效率/低毛利)还是差异化(效益/高毛利),本质上是对企业战略方向的终极拷问。 1、战略选…

项目代码第10讲【数据库运维知识——如何优化数据库查询效率?】:各种日志查看;主从复制;分库分表(MyCat);读写分离;区别数据分区、分表、分库

01. 运维-课程介绍_哔哩哔哩_bilibili 一、各种日志查看 二、主从复制 三、分库分表(MyCat) 四、读写分离 五、区别数据分区、分表、分库 1、数据库分区 上图中的ibd文件,是分区表的数据文件,可以分布在不同的物理设备上&…

OpenCV图像拼接(10)用于实现图像拼接过程中的时间流逝(timelapse)效果的一个类cv::detail::Timelapser

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::Timelapser 是 OpenCV 库中用于实现图像拼接过程中的时间流逝(timelapse)效果的一个类。它通常用于将一系列…

Transformer 通关秘籍2:利用 BERT 将文本 token 化

前面两节分别通过两个代码示例展示了模型将文本转换为 token 之后是什么样的,希望你可以对此有一个感性的认识。 本节来简要介绍一下将一个连续的文本转换为 token 序列的大致过程,这个过程被称为分词,也叫 tokenization。 在你没了解这方面…

Optional的stream方法,flatMap, filter应用

Java 8引入的Optional和Stream彻底改变了我们处理空值和集合操作的方式。本文将深入探讨如何将二者结合使用,通过四个核心场景提升代码的健壮性和简洁性。 一、Optional构成的Stream:空值自动过滤 当处理Optional集合时,我们常需要过滤掉空…

参加李继刚线下活动启发:未来提示词还会存在吗?

上周六,我参加了李继刚老师组织的线下活动。 现场干货满满,尤其是关于 AI 时代提示词的价值、与 AI 沟通的艺术等话题,李老师的分享如同醍醐灌顶,让我对 AI 人机协作有了更深的理解。 将几点核心收获整理出来,与大家…

Python基础知识第二天:从格式化到流程控制

Python基础知识第二天:从格式化到流程控制 大家好!今天我们来梳理Python的一些重要基础知识,包括格式化输出、输入函数、运算符以及流程控制语句。 1. 格式化输出 Python提供了多种格式化输出的方式: # %d, %f, %s 格式化name &q…

GDB: coredump

前言:一句话如下使用 gdb [exec_file] [core_file] # or gdb -c [core_file] [exec_file] #-c指定转储的core文件 gdb -c core.5213 spp_uc_frequent_contact_ol_worker # 进入后输入bt查看调用栈 bt #显示所有帧栈 bt 10 #显示前面10个帧栈(感觉没啥用) bt …

21_js正则_表单验证

目录 正则 一、 正则的概念 二、创建正则方式 2.1 构造函数去创建正则 2.2 字面量去创建正则 2,3 test方法 三、正则修饰符 四、 正则的方法 lastIndex test方法 exec 五、字符串方法 replace match search split 六、正则表达式的构成 元字符-- 定位符 元字…

矿山自动化监测解决方案

1.行业现状 为贯彻落实《中共中央国务院关于推进安全生产领域改革发展的意见》《“十四五”矿山安全生产规划》(应急〔2022〕64号)、《国务院安委会办公室关于加强矿山安全生产工作的紧急通知》(安委办〔2021〕3号)等有关工作部署…

企业级知识库建设:自建与开源产品集成的全景解析 —— 产品经理、CTO 与 CDO 的深度对话

文章目录 一、引言二、主流产品与方案对比表三、自建方案 vs. 开源产品集成:技术路径对比3.1 自建方案3.2 开源产品集成方案 四、结论与个人观点 一、引言 在当今数据驱动的商业环境中,构建高质量的知识库已成为企业数字化转型的关键一环。本博客分别从…

【蓝桥杯】单片机设计与开发,温度传感器DS18B20

一、温度传感器概述 结构图 二、通信过程 三、onewire单总线协议概述 四、单总线的工作原理 黑粗线是单片机发送的,浅的是s18b20回应的 五、温度传感器的应用 六、onewire 七、课后习题

Python 在Word中查找并替换文本

在操作Word文档时,如果想要修正一处反复出现的拼写错误,统一文中前后不一致的术语,或者将文档中所有的旧联系方式更新为新号码。这时我们可以使用 Word中的查找替换功能,快速定位并批量处理文档中的特定文本,提升编辑效…

Python 笔记 (二)

Python Note 2 1. Python 慢的原因2. 三个元素3. 标准数据类型4. 字符串5. 比较大小: 富比较方法 rich comparison6. 数据容器 (支持*混装* )一、允许重复类 (list、tuple、str)二、不允许重复类 (set、dict)1、集合(set)2、字典(dict)3、特殊: 双端队列 deque 三、数据容器的共…

kill子进程后再wait可以吗?

在父进程中先使用 kill 函数终止子进程,之后再使用 wait 函数是可行的,下面从原理、使用示例、注意事项几个方面详细说明。 原理 kill 函数:其作用是向指定进程发送信号。当向子进程发送 SIGTERM(通常用于请求进程正常终止&…

ai-api-union项目,适配各AI厂商api

项目地址:alpbeta/ai-api-union 需求:实现兼容各大模型厂商api的流式对话和同步对话接口,本项目现兼容智谱、豆包、通义、通义版deepseek 设计 一个ChatController类对外暴露这两个接口,入参都为ChatRequest请求类,…

【QT】QT样式设计

QT样式设计 一、QT工程中添加资源文件1.资源文件:2. 添加步骤:3. 新增资源文件以及删除现有的资源文件4. 使用资源文件 二、QT中的qss语句(样式设计语句)1. 样式设计2.常见的qss语句示例代码: 一、QT工程中添加资源文件 1.资源文件&#xff…

Megatron-LM中的deepseek-v3实现

Megatron-LM:https://github.com/NVIDIA/Megatron-LM/tree/main 使用此仓库构建的著名的库也有很多,如: Colossal-AI, HuggingFace Accelerate, and NVIDIA NeMo Framework.Pai-Megatron-Patch工具是阿里人工智能平台PAI算法团队研发,ai-Megatron-Patch…