一、shiftdim函数的作用与用法介绍
shiftdim是matlab中一个很常用的计算函数,主要作用是用来帮助矩阵维数变化和维数移动,将原来的矩阵左移和右移n个单位,下面我们看一下该shiftdim原文中对该语法函数的相关描述。
上文中的英文简单翻译过来就是比如说目前是一个A = shiftdim(X,M)的矩阵函数,该函数的实际意思就是将X这个函数按照M这个数值大小进行左移和右移,将这个矩阵进行重新的排列变化,如果M是正数的话那么该矩阵就会向左移动,如果M是个负值那么这个矩阵就会向右进行移动。
移动位数跟M的大小相关,M是1的话,那就是统一向左移动一位,最左边的推到最右边,然后最右边的往左移动一位,第二位移动移动到第一位,大概是这个意思。
如果M值等于2的话,那就是统一向左移动两个位数,第一位推到最后一位然后再向左移动一位,如果值是-2,就是每一位上都统一向右移动两个位数。
相关文章:
二、语法结构
语法一结构案例:E=shiftdim(F,m);
语法一是shiftdim最基本的用法,其主要作用我们在上文中已经讲过了,该案例的意思是将这个多维数组向左或向右移动M个位置将矩阵进行变换。
M是正整数就向左移动M个位置,M是负整数就向右移动M个位置,比如现在有一个F=5×7×2的数组,假设M的值是2的话,经过移动变化后的值变为E=2×5×7,因此就得到一个E=2×5×7的全新的数组。
语法二结构案例:F = shiftdim(E);
语法二的实际意思是返回了一个跟E的数组元素相同的一个新的F的数组,唯一的不同的点就是该元素中第一位的维度被删除掉了,也就是说使用了该函数后维度是1的被删除掉。
语法三结构案例:[F,n] = shiftdim(E);
语法三的代码表明将原先的数组E已经删除的维度是1的重新返回过来,重新返回出去。
三、shiftdim()移动维度
上文中讲了三个语法结构案例,刚好我们可以用这三个语法来讲解一下matlab中的shiftdim的移动维度是怎么做的。
上图定义了一个数组A,它的维度是五维,该题目的要求就是用shiftdim()这个语法练习一下该语法删除维度是1的元素,然后返回的数值是多少?
从图中可以看出,数组A中维度是1的有两个值,得到的返回出来的数值刚好是2,正好应对了我们上文讲的该语法的正确性。
然后该数组A又再次进行变换移动了两个维度后就得到了一个B=3×2×4的这样一个三维的数组。
接着上面的三维数组B=3×2×4这个数组接着进行下面的计算,接下来我们看上图中的代码,首先它应用了shiftdim(B,2)这个语法,将得到的三维数组B进行向左移动了两个位置,因为括号里面的参数是2又是正整数,所以它向左移动了两位。因此就得到了一个C=4×3×2移动两位后的这么一个三维数组。
然后接下来又考察了一下参数是负值的话向右移动的这么一个案例,图中应用shiftdim(C,-1)这个语法,由于括号中的参数是负值,值又是1,因此它向右移动了一个位置后就得到了一个D=3×2×4的三维数组。
相关文章:
四、相关示例
相关提问问题示例贴图:
上图是网友提问的shiftdim的具体使用和具体的相关作用的问题,刚好借着这个问题和推荐回答让大家加深一下对该函数的使用用法的印象。
首先定义了一个data数组,该数组使用reshape函数按照里面的参数进行变化,得到了一个2×2×1的三维数组,
然后将这个数组调用shiftdim()方法逐渐的进行变换位数,参数是1就是向左移动一位,值就会发生了一位的变化,最终的值变成2×1×2,然后再调用一次shiftdim()方法向左再移动两位,值就变成了2×2×1。
像这样以此类推,不管是shiftdim()里面的参数是2、3、4或者5都是按照此种方法进行移动变换,相反-2、-3、-4等负值的移动方法刚好与之相反,都是向右移动。
相关文章: