在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]);