当前位置: 首页 > news >正文

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     1
     2     3     4     5     1     1
     3     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     4
     2     3     4     5
     3     4     5     6
     1     1     1     1
     1     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     3
     1     7     2     8     5     8

B =
     3     7    10     5
     1    10     8     3
    10     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     3
     6    10     1     7    10     7

ans =
     6     7     1     7     4     3
     9    10     5     9    10     7

% 按照每一行进行单独排序
sort(A,2)
% 排序结果
ans =
     2     5     6     7     8     9
     1     2     2     4     4     8

% 降序排列
sort(A,2,'descend')
ans =
    10    10     7     4     4     1
     8     7     3     3     2     1

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

sortrows(A,2,"descend")

ans =
     5     9     1     1    10    10
     3     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     2
     4     5     5     4
     1    10     9    10

ans =
     7    21    23    16

ans =
    19
    18
    30

ans =
    67

ans =
    67

ans =
    77760000

ans =
    77760000
1.4.4.2 矩阵加减

(1)矩阵加法(+)

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

示例:

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

结果:

C =
     6     8
    10    12

(2)矩阵减法(-)

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

示例:

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

结果:

C =
     9    18
    27    36

(3)标量与矩阵的加减

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

示例:

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

结果:

C =
    11    12
    13    14

D =
    -4    -3
    -2    -1

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

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

示例:

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

结果:

ans =
     6    14    12
     9    18    10

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

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

示例:

A = 
	3 6 5
	2 6 8
B = 6
    5

结果:

ans =
     9 12 11
     7 11 13

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

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

示例:

A = 
	2
	5
B = 
	1 8 3

结果:

ans =
     3    10     5
     6    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    22
    43    50

(2)逐元素乘法(.*

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

示例:

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

计算方式:

image-20250326221825973

计算结果:

C =
     5    12
    21    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.dtcms.com/a/98532.html

相关文章:

  • 测试测试 测试
  • Kubernetes》k8s》Containerd 、ctr 、cri、crictl
  • 每日一题 MySQL基础知识----(四)
  • Java 大视界 -- Java 大数据机器学习模型在电商商品推荐冷启动问题中的解决策略(160)
  • [Python学习日记-88] 并发编程之多进程 —— 队列与生产者消费者模型
  • 赛博威智慧导购平台,融合AI激活一线导购效能,破局增长瓶颈
  • 目标识别与双目测距(1)环境搭建:Ubuntu+yolov5+pcl库
  • JAVA学习*工厂模式
  • Python容器详解:从字符串到字典的完整指南
  • CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.4 泛型
  • 4.训练篇2-毕设篇
  • Share01-WinCC文件越用越大?
  • 【学习笔记】文件上传漏洞--js验证、mime验证、.user.ini、短标签、过滤、文件头
  • 大数据Spark(五十五):Spark框架及特点
  • Leetcode 两数相除
  • 海量数据处理
  • 下载和初步上手Vue3路由
  • NOIP2007提高组.矩阵取数游戏
  • 思维链技术(Chain-of-Thought, CoT)
  • 双卡 RTX 5090 深度体验:AI 推理框架选择与性能限制实测
  • HCIP(RSTP+MSTP)
  • 【STL】list
  • React程序打包与部署
  • JAVASE-day14
  • 蓝桥杯备考:多米诺骨牌
  • 【Linux】GDB调试指南
  • 基于YALMIP+CPLEX的带储能微电网调度问题最优求解matlab仿真
  • 提示词工程(Prompt Engineering):释放AI潜能的“语言编程”
  • #CX# UVM中的virtual sequence 和 virtual sequencer 的用途
  • 【Kafka】从理论到实践的深度解析