前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matlab-重构和重新排列数组

Matlab-重构和重新排列数组

作者头像
用户9925864
发布2022-07-27 09:24:25
1.1K0
发布2022-07-27 09:24:25
举报
文章被收录于专栏:算法工程师的学习日志

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

1、重构

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

代码语言:javascript
复制
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    12


B = reshape(A,2,6)
B = 2×6

     1     3     5     7     9    11
     2     4     6     8    10    12

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

代码语言:javascript
复制
C = reshape(A,2,2,3)
C = 
C(:,:,1) =

     1     3
     2     4


C(:,:,2) =

     5     7
     6     8


C(:,:,3) =

     9    11
    10    12

2、转置和翻转

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

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

代码语言:javascript
复制
A = magic(3)
A = 3×3

     8     1     6
     3     5     7
     4     9     2


B = A.'
B = 3×3

     8     3     4
     1     5     9
     6     7     2

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

代码语言:javascript
复制
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.0000i


B = A'
B = 2×2 complex

   1.0000 - 1.0000i   0.0000 + 1.0000i
   1.0000 + 1.0000i   0.0000 - 1.0000i

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

代码语言:javascript
复制
A = [1 2; 3 4]
A = 2×2

     1     2
     3     4


B = flipud(A)
B = 2×2

     3     4
     1     2


C = fliplr(A)
C = 2×2

     2     1
     4     3

3、平移和旋转

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

代码语言:javascript
复制
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    12


B = circshift(A,[0 2])
B = 3×4

     3     4     1     2
     7     8     5     6
    11    12     9    10

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

代码语言:javascript
复制
C = circshift(A,[-1 0])
C = 3×4

     5     6     7     8
     9    10    11    12
     1     2     3     4

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

代码语言:javascript
复制
A = [1 2; 3 4]
A = 2×2

     1     2
     3     4


B = rot90(A)
B = 2×2

     2     4
     1     3

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

代码语言:javascript
复制
C = rot90(B,3)
C = 2×2

     1     2
     3     4

4、排序

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

代码语言:javascript
复制
A = magic(4)
A = 4×4

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1


B = sort(A)
B = 4×4

     4     2     3     1
     5     7     6     8
     9    11    10    12
    16    14    15    13

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

代码语言:javascript
复制
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 的各行排序。行的位置发生变化,但每一行中元素的顺序不变。

代码语言:javascript
复制
D = sortrows(A)
D = 4×4

     4    14    15     1
     5    11    10     8
     9     7     6    12
    16     2     3    13
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法工程师的学习日志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、重构
  • 2、转置和翻转
  • 3、平移和旋转
  • 4、排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档