• matlab学习笔记11_3高维数组操作 filp, shiftdim, size, permute, ipermute


    一起来学matlab-matlab学习笔记11

    11_3 高维数组处理和运算

    filp, shiftdim, size, permute, ipermute

    觉得有用的话,欢迎一起讨论相互学习~Follow Me

    filp

    • 翻转元素顺序

    语法

    B = flip(A)
    B = flip(A,dim)

    说明

    B = flip(A) 返回的数组 B 具有与 A 相同的大小,但元素顺序已反转。B 中重新排序的维度取决于 A 的形状:

    如果 A 为向量,flip(A) 将沿向量的长度方向反转元素顺序。

    如果 A 为矩阵,flip(A) 将反转每列元素的顺序。

    如果 A 为 N 维数组,flip(A) 将按 A 的大小值不等于 1 的首个维度上进行运算。

    B = flip(A,dim) 沿维度 dim 反转 A 中元素的顺序。例如,如果 A 为矩阵,flip(A,1) 将反转每一列中的元素,flip(A,2) 将反转每一行中的元素。

    翻转字符向量

    A = 'no word, no bond, row on.';
    B = flip(A)
    B =
    '.no wor ,dnob on ,drow on'
    

    翻转列向量

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

    翻转矩阵

    在这里插入图片描述

    翻转元胞数组

    在这里插入图片描述

    输入参数

    在这里插入图片描述


    shiftdim

    • 移动数组维度

    语法

    • B = shiftdim(A,n)

      • B = shiftdim(A,n) 将数组 A 的维度移动 n 个位置。当 n 为正整数时,shiftdim 向左移动维度;当 n 为负整数时,向右移动维度。例如,如果 A 是 2×3×4 数组,则 shiftdim(A,2) 返回 4×2×3 数组。
    • B = shiftdim(A)

      • B = shiftdim(A) 返回数组,其元素与 A 相同,但删除了前面的长度为 1 的维度。
    • [B,m] = shiftdim(A)

      • [B,m] = shiftdim(A) 还返回删除的长度为 1 的维度的数量。

    四维矩阵

    • 创建一个 4×2×3×5 数组。将维度向左移动 2 个位置,使前两个维度长度绕回到最后两个维度。
    A = rand(4,2,3,5);
    B = shiftdim(A,2);
    size(B)
    ans = 1×4
    
         3     5     4     2
    
    • 将维度向右移动 2 个位置,使前面 2 个维度的长度为 1。 向右移动不会将维度长度绕回。
    C = shiftdim(A,-2);
    size(C)
    ans = 1×6
    
         1     1     4     2     3     5
    

    移动矩阵维度

    • 计算 5 维数组 A,并删除前面的长度为 1 的维度。shiftdim 函数将移动 2 个维度,并返回三维数组 B。
    A = rand(1,1,3,2,4);
    [B,nshifts] = shiftdim(A);
    nshifts
    nshifts = 2 % 表示被删除的维度的个数
    size(B)
    ans = 1×3 % 表示被删除的维度的值
    
         3     2     4
    
    将 B 的维度向左移动两次。
    
    C = shiftdim(B,2);
    size(C)
    ans = 1×3
    
         4     3     2
    
    将 C 的维度向右移动一次。
    
    D = shiftdim(C,-1);
    size(D)
    ans = 1×4
    
         1     4     3     2
    

    size

    • 获取矩阵形状大小

    permute

    • 置换数组维度

    语法

    • B = permute(A,dimorder)

    说明

    • B = permute(A,dimorder) 按照向量 dimorder 指定的顺序重新排列数组的维度。例如,permute(A,[2 1]) 交换矩阵 A 的行和列维度。因为在矩阵中第一维度是行数,第二个维度是列数

    三维数组

    • 创建一个342数组并对其进行置换,交换第一个维度和第三个维度,从而得到243数组
      在这里插入图片描述

    ipermute

    • 逆置换数组维度

    语法

    • A = ipermute(B,dimorder)

    说明

    A = ipermute(B,dimorder) 按照向量 dimorder 指定的顺序重新排列数组 B 的维度,使得 B = permute(A,dimorder)。 逆置换 A 是满足如下条件的数组:当您使用相同的维度顺序对其进行置换时,结果等于原始数组 B。
    即A置换成为B,B通过逆置换返回A

    在这里插入图片描述

  • 相关阅读:
    【Luogu1501】Tree(Link-Cut Tree)
    【BZOJ3530】数数(AC自动机,动态规划)
    【BZOJ1212】L语言(AC自动机)
    【BZOJ2037】Sue的小球(动态规划)
    【BZOJ1899】午餐(动态规划)
    【BZOJ1009】GT考试(KMP算法,矩阵快速幂,动态规划)
    【BZOJ1040】骑士(动态规划)
    【BZOJ1969】航线规划(Link-Cut Tree)
    【BZOJ4653】【NOI2016】区间(线段树)
    我也不知道什么是"莫比乌斯反演"和"杜教筛"
  • 原文地址:https://www.cnblogs.com/cloud-ken/p/11759167.html
Copyright © 2020-2023  润新知