Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 未知维数阵列的matlab最大值_Arrays_Matlab_Matrix_Max - Fatal编程技术网

Arrays 未知维数阵列的matlab最大值

Arrays 未知维数阵列的matlab最大值,arrays,matlab,matrix,max,Arrays,Matlab,Matrix,Max,我想计算最大值,更重要的是,一个N×N…x-N数组的坐标,而不指定它的维数 例如,让我们以: A = [2 3]; B = [2 3; 3 4]; 函数(我们称之为MAXI)应该为矩阵A返回以下值: [fmax, coor] = MAXI(A) fmax = 3 coor = 2 对于矩阵B: [fmax, coor] = MAXI(B) fmax = 4 coor= 2 2 主要问题不是开发一个特别适用于某一类的代码,而是开发一个能尽快适用于任何输

我想计算最大值,更重要的是,一个N×N…x-N数组的坐标,而不指定它的维数

例如,让我们以:

A = [2 3];
B = [2 3; 3 4];
函数(我们称之为
MAXI
)应该为矩阵
A
返回以下值:

[fmax, coor] = MAXI(A)

fmax =
   3

coor =
   2
对于矩阵
B

[fmax, coor] = MAXI(B)

fmax =
    4

coor=
    2   2

主要问题不是开发一个特别适用于某一类的代码,而是开发一个能尽快适用于任何输入(具有更高维度)的代码。

要找到绝对最大值,您必须首先将输入矩阵转换为列向量,并找到最大元素的线性索引,然后将其转换为具有的坐标。这可能有点棘手,因为
ind2sub
需要指定已知数量的输出变量。为此,我们可以采用单元阵列,如下所示:

[fmax, coor] = max(A(:));
if ismatrix(A)
    C = cell(1:ndims(A));
    [C{:}] = ind2sub(size(A), coor);
    coor = cell2mat(C);
end
编辑:我添加了一个额外的
if
语句,用于检查输入是矩阵还是向量,如果是向量,则返回线性索引本身

在函数中,它看起来是这样的:

function [fmax, coor] = maxi(x)
    [fmax, coor] = max(A(:));
    if ismatrix(A)
        C = cell(1:ndims(A));
        [C{:}] = ind2sub(size(A), coor);
        coor = cell2mat(C);
    end
例子
我删除了我的答案:阅读文档,尤其是
max
ind2sub
的覆盖范围。
A = [2 3; 3 4];
[fmax, coor] = maxi(A)

fmax =
    4

coor =
    2    2