MATLAB中的许多函数都可以提取现有数组的元素,然后按照不同的形状或顺序放置。这样有助于预处理数据,便于之后进行计算或分析。

1、重构

reshape 函数可以更改数组的大小和形状。例如,将 3×4 矩阵重构成 2×6 矩阵。

A = [1 4 7 10; 2 5 8 11; 3 6 9 12]A = 3×4
     1     4     7    10     2     5     8    11     3     6     9    12B = reshape(A,2,6)B = 2×6
     1     3     5     7     9    11     2     4     6     8    10    12

只要不同形状中的元素数量相同,就可以将它们重构成具有任意维度的数组。使用 A 中的元素,创建一个 2×2×3 的多维数组。

C = reshape(A,2,2,3)C = C(:,:,1) =
     1     3     2     4C(:,:,2) =
     5     7     6     8C(:,:,3) =
     9    11    10    12

2、转置和翻转

线性代数中常见的任务是转置矩阵,即将矩阵的行变成列,将列变成行。要实现此目的,可以使用 transpose 函数或 .' 运算符。

创建一个 3×3 矩阵并计算其转置。

​​​​​​​

A = magic(3)A = 3×3
     8     1     6     3     5     7     4     9     2B = A.'B = 3×3
     8     3     4     1     5     9     6     7     2

类似的运算符 ' 可以计算复矩阵的共轭转置。此操作计算每个元素的复共轭并对其进行转置。创建一个 2×2 复矩阵并计算其共轭转置。​​​​​​​

A = [1+i 1-i; -i i]A = 2×2 complex
   1.0000 + 1.0000i   1.0000 - 1.0000i   0.0000 - 1.0000i   0.0000 + 1.0000iB = A'B = 2×2 complex
   1.0000 - 1.0000i   0.0000 + 1.0000i   1.0000 + 1.0000i   0.0000 - 1.0000i

flipud 上下翻转矩阵的行,fliplr 左右翻转矩阵的列。​​​​​​​

A = [1 2; 3 4]A = 2×2
     1     2     3     4B = flipud(A)B = 2×2
     3     4     1     2C = fliplr(A)C = 2×2
     2     1     4     3

3、平移和旋转

使用 circshift 函数,可以将数组的元素平移一定的位置数。例如,创建一个 3×4 矩阵,然后将其各列向右平移 2 个位置。第二个参数 [0 2] 要求 circshift 将各行平移 0 个位置,将各列向右平移 2 个位置。​​​​​​​

A = [1 2 3 4; 5 6 7 8; 9 10 11 12]A = 3×4
     1     2     3     4     5     6     7     8     9    10    11    12B = circshift(A,[0 2])B = 3×4
     3     4     1     2     7     8     5     6    11    12     9    10

要将 A 的各行向上平移 1 个位置而各列保持不动,请将第二个参数指定为 [-1 0]。​​​​​​​

C = circshift(A,[-1 0])C = 3×4
     5     6     7     8     9    10    11    12     1     2     3     4

rot90 函数可以将矩阵逆时针旋转 90 度。​​​​​​​

A = [1 2; 3 4]A = 2×2
     1     2     3     4B = rot90(A)B = 2×2
     2     4     1     3

如果再旋转 3 次(使用第二个参数指定旋转次数),最后将得到原始矩阵 A。​​​​​​​

C = rot90(B,3)C = 2×2
     1     2     3     4

4、排序

对数组中的数据进行排序也是一项实用功能,MATLAB 提供了几种排序方法。例如,sort 函数可以按升序或降序对矩阵的每一行或每一列中的元素进行排序。创建矩阵 A,并按升序对 A 的每一列进行排序。

A = magic(4)A = 4×4
    16     2     3    13     5    11    10     8     9     7     6    12     4    14    15     1B = sort(A)B = 4×4
     4     2     3     1     5     7     6     8     9    11    10    12    16    14    15    13

按降序对每一行进行排序。第二个参数值 2 指定您希望逐行排序。​​​​​​​

C = sort(A,2,'descend')C = 4×4
    16    13     3     2    11    10     8     5    12     9     7     6    15    14     4     1

要整行排序,请使用 sortrows 函数。例如,根据第一列中的元素按升序对 A 的各行排序。行的位置发生变化,但每一行中元素的顺序不变。​​​​​​​

D = sortrows(A)D = 4×4
     4    14    15     1     5    11    10     8     9     7     6    12    16     2     3    13

Matlab-重构和重新排列数组相关推荐

  1. matlab重排矩阵,重构和重新排列数组

    重构 reshape 函数可以更改数组的大小和形状.例如,将 3×4 矩阵重构成 2×6 矩阵. A = [1 4 7 10; 2 5 8 11; 3 6 9 12] A = 3×4 1 4 7 10 ...

  2. Matlab 基础01 - 多维数组的排列转换和Permute 函数

    前言: 本章通过Matlab官网的例子,介绍Matlab Permute函数的数组维度置换功能:由于官网的说明比较晦涩难懂,所以,这里用自己的语言和理解重新组织了一下. 1 语法: B = permu ...

  3. matlab中有虚数j吗,在MATLAB中用虚数部分对复数数组元素排序

    我有一组数据点,它们是复数,它们有8行6列.如果你看看这个程序,你可以看到数据集是非常随机排列的.第1,2,3列没问题,但是第4列有点异常.我的意思是说,在B(5,4)的元素(即25.98686740 ...

  4. MATLAB学习第八天(数组,符号,函数)

    目录 MATLAB数组 MATLAB中的特殊阵列 MATLAB幻方 MATLAB多维数组 详细例子 MATLAB数组函数 详细示例 MATLAB数组排序 MATLAB单元阵列 注意 详细例子 MATL ...

  5. Matlab编程与数据类型 -- 单元数组

    Matlab编程与数据类型 – 单元数组

  6. 【MATLAB】数据类型 ( 元胞数组 | 单位阵 | 幻方 | 结构体 | 元胞数组值获取 )

    文章目录 一.元胞数组 1.定义元胞数组 2.生成单位阵 3.生成幻方 4.元胞数组元素赋值 5.元胞数组元素赋值 二 二.元胞数组 1.定义结构体 2.小括号获取元胞数组子数组 3.大括号获取元胞数 ...

  7. 如何使用matlab中的胞元数组

    胞元数组(cell Arry)的基本组分是胞元(cell),每个胞元本身在数组中是平等的,只能以下标区分.胞元可以存放任何类型.任何大小的数组,如任意维数值数组.字符串数组.符号对象等,而且同一个胞元 ...

  8. 算法基础数学知识篇(1)之----- 排列数组

    排列数组 前言 一.隔板法 二.分组分配法 前言 排列组合在算法求解中尤为重要,特别是对于方案数的求解,以及我们知道本质之后可以对其进行深入的挖掘.如 x+y=4x + y = 4x+y=4,求解的数 ...

  9. 程序员编程艺术第二十七章:不改变正负数相对顺序重新排列数组(无解?)

    第二十七章:不改变正负数之间相对顺序重新排列数组.时间O(N),空间O(1) 前言 本文开始之前,顺道说个事:CSDN最近开始评选10大博客专栏,投票地址为:http://event.blog.csd ...

  10. 【matlab】访问元胞数组

    [matlab]访问元胞数组 这里我们先使用大括号来访问元胞数组 语法格式: 元胞数组{那个位置的元胞的下标}(当前元胞的具体元素的下标) 具体我们来看看代码是怎么写的: a{1,2}=ones(3, ...

最新文章

  1. Office 365 系列之一:初识Office 365
  2. 一个苹果手机移动电源也能让他拽得跟二五八万似的
  3. R可视化绘制t分布(t Distribution)
  4. 第三次作业+105032014101
  5. 《 Spring1之第二次站立会议(重发)》
  6. flash写保护原理_老司机带路:LPC82x 存储器及读写保护 手到擒来!
  7. python学习-高阶函数(函数传参、返回函数(闭包)、匿名函数lambda)
  8. 板邓:wordpress自定义登录页面实现用户登录
  9. 微信小程序 查找兄弟节点_使用C ++程序在链接列表中查找节点
  10. hdu 1232 畅通工程 最小生成树 并查集
  11. python基础08
  12. unity3d 绘制小地图_Unity3D —— 小地图制作插件NJG MiniMap
  13. 结构体数组定义时初始化
  14. 经典小游戏开发思路和算法之拼图(1)
  15. ecshop一键购物
  16. 使用VSCode拉取代码报错would clobber existing tag
  17. 【愚公系列】2022年09月 微信小程序-自定义tabBar的实现
  18. 【python】OpenCV—Brightness and Contrast adjustments
  19. 实验二 matlab矩阵分析与处理
  20. 关于interrupt(),interrupted(),isInterrupted()用法分析

热门文章

  1. R语言实战应用精讲50篇(九)-正态分布的检验
  2. 深度学习核心技术精讲100篇(二十)-如何通过树模型实现梯度提升树(GBDT)+LR,随机森林(RandomForest) +LR
  3. 探索推荐引擎内部的秘密
  4. 机器学习-非监督分类算法之关联规则
  5. python3根据地址批量获取百度地图经纬度
  6. 微服务实战(四):服务发现的可行方案以及实践案例
  7. GitHub上那些值得一试的JAVA开源库--转
  8. 如何设置、查看以及调试core文件
  9. 基于若依框架的二次开发_浅谈若依框架
  10. 区块链开发之搭建以太坊私有链