gpt4 book ai didi

arrays - 如何在 MATLAB 中找到多个数组的最大值?

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:58 29 4
gpt4 key购买 nike

假设我们有一个数组x。我们可以找到这个数组的最大值如下:

maximum = max(x);

如果我有两个数组,比方说 x 和 y,我可以使用命令找到包含最大值的数组

maximum_array = max(x, y);

假设这个数组是 y。然后,我可以通过使用带有参数 y 的 max 命令来找到最大值,就像之前使用 x 一样:

maximum_value = max(y);

可以使用以下紧凑的单行命令执行此两步过程:

maximum_value = max(max(x, y));

但是当我们有超过 2 个数组时会发生什么?据我所知, max 函数不允许比较两个以上的数组。因此,我必须对数组对使用 max,然后在中间结果中找到 max(这还涉及使用其他变量)。当然,如果我有,比方说,50 个阵列,这将是 - 而且确实是 - 一个乏味的过程。

有没有更有效的方法?

最佳答案

方法 #1

沿着 dim-2 将它们的 column 向量版本与 cat 连接起来 然后将最大值与 max 一起使用 沿 dim-2 获得最大值。

因此,假设 xyz 为输入数组,执行如下操作 -

%// Reshape all arrays to column vectors with (:) and then use cat
M = cat(2,x(:),y(:),z(:))

%// Use max along dim-2 with `max(..,[],2)` to get column vector
%// version and then reshape back to the shape of input arrays
max_array = reshape(max(M,[],2),size(x))

方法 #2

您可以使用 ndims 找到输入数组中的维度数,然后沿着该维度的加 1 的维度进行连接,最后沿着它找到 max 以获得最大值数组。这将避免所有这些来回 reshape ,因此可以更高效和更紧凑的代码 -

ndimsp1 = ndims(x)+1                         %// no. of dimensions plus 1
maxarr = max(cat(ndimsp1,x,y,z),[],ndimsp1) %// concatenate and find max

关于arrays - 如何在 MATLAB 中找到多个数组的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28247714/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com