zoukankan      html  css  js  c++  java
  • Matlab -- circshift函数用法

    循环平移数组

    语法

    说明

    Y = circshift(A,K) 循环将 A 中的元素平移 K 个位置。如果 K 为整数,则 circshift 沿大小不等于 1 的第一个 A 维度进行平移。如果 K 为整数向量,则每个 K 元素指示 A 的对应维度中的平移量。(示例

    示例:

    1. 平移列向量元素

    创建一个数值列向量。

    A = (1:10)'
    A = 10×1
    
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
    

    使用 circshift 将元素平移三个位置。

    Y = circshift(A,3)
    Y = 10×1
    
         8
         9
        10
         1
         2
         3
         4
         5
         6
         7
    

    结果 Y 具有与 A 相同的元素,但元素的顺序不同。

    2. 平移数组中的字符

    创建字符数组并使用 circshift 将字符平移 3 个位置。Y 中的字符具有不同的顺序。

    A = 'racecar';  
    Y = circshift(A,3)
    Y = 
    'carrace'

    3. 平移矩阵元素

    创建一个左上角包含一块“1”的数值数组。

    A = [1 1 0 0; 1 1 0 0; 0 0 0 0; 0 0 0 0]
    A = 4×4
    
         1     1     0     0
         1     1     0     0
         0     0     0     0
         0     0     0     0
    

    使用 circshift 将 A 的每一行向右平移一个位置。

    Y = circshift(A,1,2)
    Y = 4×4
    
         0     1     1     0
         0     1     1     0
         0     0     0     0
         0     0     0     0
    

     将 A 的元素在每个维度中平移一个位置。由“1”构成的群组现在处于矩阵的中心。

    Y = circshift(A,[1 1])
    Y = 4×4
    
         0     0     0     0
         0     1     1     0
         0     1     1     0
         0     0     0     0
    

    要将群组恢复到其原始位置,请使用负平移值对 Y 执行 circshift。矩阵 X 等效于 A

    X = circshift(Y,[-1 -1])
    X = 4×4
    
         1     1     0     0
         1     1     0     0
         0     0     0     0
         0     0     0     0

    输入参数

    A - 输入数组
    向量 | 矩阵 | 多维数组

    输入数组,指定为向量、矩阵或多维数组。

    数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell
    复数支持: 是

    K - 平移量
    整数标量 | 整数向量

    平移量,指定为整数标量或整数向量。

    • 如果您指定 K 为整数,但不指定 dim,则 circshift 将沿其大小不等于 1 的第一个维度平移。正 K 向维度末尾平移,负 K 向开头平移。

    • 如果将 K 指定为整数向量,则 K 中的第 N 个元素指定 A 中第 N 个维度的平移量。如果 K 中的第 N 个元素为正值,则 A 的值将向第 N 个维度的末尾平移。如果第 N 个元素为负值,则值向开头平移。

    如果平移量大于 A 中对应维度的长度,则平移操作会绕回到该维度的开头。例如,将 3 元素向量平移 +3 个位置将使其元素重新回到其原始位置。

    dim - 沿其运算的维度
    正整数标量

    沿其运算的维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个维度。如果指定 dim,则 K 必须为整数标量。通常,指定 dim = 1 以交换行,指定 dim = 2 以交换列,等等。

     
    例子:
    a = [1 2 3;4 5 6;7 8 9];
    b = [-1 -2 -3; -4 -5 -6;-7 -8 -9];
    c = [10 20 30; 40 50 60; 70 80 90];
    Hist(:,:,1) = a;
    Hist(:,:,2) = b;
    Hist(:,:,3) = c;
    
    Hist_1 = circshift(Hist,[0,0,-1]);
    Hist_2 = circshift(Hist,[1,0,0]);
    Hist_3 = circshift(Hist,[0,1,0]);

    Hist:

    Hist_1:

    Hist_2:

     Hist_3:

    https://ww2.mathworks.cn/help/matlab/ref/circshift.html

    https://my.oschina.net/u/4357988/blog/3347734

     
  • 相关阅读:
    Java 线程具有五中基本状态 ?
    可以直接调用 Thread 类的 run ()方法么?
    创建线程的三种方式的对比?
    FutureTask 是什么 ?
    什么是 CAS?
    如何让正在运行的线程暂停一段时间?
    什么是不可变对象(immutable object)?Java 中怎么 创建一个不可变对象?
    创建线程的有哪些方式?
    Semaphore 有什么作用 ?
    CopyOnWriteArrayList 可以用于什么应用场景?
  • 原文地址:https://www.cnblogs.com/zzzsj/p/14653417.html
Copyright © 2011-2022 走看看