MATLAB中,可以使用各种内置函数对数组进行操作,比如min(arr)会返回数组中每一列的最小值。min(min(arr))返回整个数组中的最小值,或者使用min(arr(:))。

例如:

arr = [
    10, 2, 3, 4, 5;
    6, 7, 8, 9, 1;
    11, 12, 13, 14, 15;
    16, 17, 18, 19, 20
];

输出:

min(arr)

ans =

     6     2     3     4     1
min(min(arr))

ans =

     1

求最大值同理,max(arr)和max(max(arr))操作使用。


C++中,求整个数组的最大最小值如下:

double arr[4][5] ={
  {10, 2, 3, 4, 5},
  {6, 7, 8, 9, 1},
  {11, 12, 13, 14, 15},
  {16, 17, 18, 19, 20}
};
double min_arr = std::numeric_limits<double>::max();
double max_arr = std::numeric_limits<double>::lowest();
            for(size_t i =0;i<4;++i){
                for(size_t j = 0;j<5;++j){
                    min_arr = std::min(min_arr,arr[i][j]);
                    max_arr = std::max(max_arr,arr[i][j]);
                    qDebug()<<"min_arr"<<i<<j<<min_arr;
                    qDebug()<<"max_arr"<<max_arr;
                }
            }

对于每一列的最大最小值,只需对上面的程序进行稍加改动:

double arr[4][5] ={
  {10, 2, 3, 4, 5},
  {6, 7, 8, 9, 1},
  {11, 12, 13, 14, 15},
  {16, 17, 18, 19, 20}
};
double min_arr = std::numeric_limits<double>::max();
double max_arr = std::numeric_limits<double>::lowest();

          for(size_t j = 0;j<5;++j){
            for(size_t i =0;i<4;++i){
                    if(arr[i][j] < min_arr) {
                        min_arr = arr[i][j];
                    }
                    if(arr[i][j] > max_arr) {
                        max_arr = arr[i][j];
                    }
                }
            				qDebug()<<"min_arr"<<i<<j<<min_arr;
                    qDebug()<<"max_arr"<<max_arr;
            }

如上所示,输出值为数组每一列的最大最小值.

其中,以下两个函数获取的是所有元素的最大/最小值。它通过遍历数组中的每个元素,并与一个初始设定的最大/最小值(max_arr/min_arr)进行比较来实现

min_arr = std::min(min_arr,arr[i][j]);
max_arr = std::max(max_arr,arr[i][j]);