三维数组求最大最小值及其下标

2025-10-21 17:39:27

1、ind2sub这个函数就是将一个数字,按照我们需要的矩阵的维度去排列。然后知道我们给出的这个数字,如果作为下标的话,是对应我们设定的维度的矩阵的哪个下标。

对于ind2sub这个函数来说,是按照第一个维度,到第二个维度,到第三个维度这样逐个排列的。

3x2的矩阵,第一个维度是3对应的列,然后再就是2对应的行。所以,ind2sub排列出来的下标就如下所示。

[(1) (4);

 (2) (5);

 (3) (6)]

可以用[x,y] =ind2sub([3,2],2); 来检验,结果如下图所示。

三维数组求最大最小值及其下标

2、20x10x3的矩阵,就是,先排20那一维,再排10那一维,再排3那一维;

下面就是我们在MATLAB中运行命令得到的结果。

[x,y,z] = ind2sub([20,10,3],1)

x = 1, y = 1, z = 1

[x,y,z] = ind2sub([20,10,3],11)

x = 11, y = 1, z = 1

[x,y,z] = ind2sub([20,10,3],21)

x = 1, y = 2, z = 1

[x,y,z] = ind2sub([20,10,3],201)

x = 1, y = 1, z = 2

三维数组求最大最小值及其下标

三维数组求最大最小值及其下标

三维数组求最大最小值及其下标

三维数组求最大最小值及其下标

3、因此,如果我们想让ind2sub按照我们想要的顺序返回值得话,就把我们要首先排列的维度放在最前面。

4、20x10x3的矩阵,我们需要它先排列的是3,然后是10,然后是20。最后实际的index要按照[20,10,3]的序列再换回来。或者[z,y,x] = ind2sub([3,10,20],111);

[x,y,z] = ind2sub([3,10,20],1)

x = 1, y = 1, z = 1          实际index: [1,1,1]

[x,y,z] = ind2sub([3,10,20],11)

x = 2, y = 4, z = 1          实际index: [1,4,2]

[x,y,z] = ind2sub([3,10,20],21)

x = 3, y = 7, z = 1          实际index: [1,7,3]

[x,y,z] = ind2sub([3,10,20],201)

x = 3, y = 7, z = 7           实际index: [7,7,3]

下面为MATLAB中[z,y,x] = ind2sub([3,10,20],111)的实际执行结果。

三维数组求最大最小值及其下标

5、对于下面的语句,求三维数组中最大值或者最小值的坐标,因为我们用[min_a,index] = min(A(:));这一语句,就把这边的排列A为一维数组和后面的ind2sub排列顺序对应起来了。就不用进行转化了。

A = [1 2 3 4 5 6; 7 8 9 10 11 12; 13 14 15 16 0 17; 18 19 20 21 22 23; 24 25 26 27 28 29]

[min_value,min_index] = min(A(:))

[x,y] = ind2sub([5,6],min_index)

 x = 3, y =5

下面为MATLAB中的实际执行结果。

三维数组求最大最小值及其下标

三维数组求最大最小值及其下标

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢