matlab - 从一个数组中获取最大值并在另一个数组中找到它的位置

标签 matlab max

我是 Matlab 的新手,但我真的需要学习它。希望它对我的研究非常有用。 现在我面临以下问题。

我有两张图片(名为 A 和 B)。两者都有 7 个相同维度的层 (4169,6289,7)。首先,我想在 A 图像中找到具有最大值的图层,然后在 B 图像中查找相应的值。例如:如果A图像中的第五层具有最大值,我需要B图像中第五层的值。 我刚刚编写了这段代码 c=max(a,[],3) 来查找 A 图像中具有最大值的图层,但不知道如何设置以在 B 图像中获取相应的值。你能帮我吗?

非常感谢

最佳答案

您不需要最大值,您需要第二个参数,即索引。

 [~,indexOfMax] = max(a,[],3); %#Get index of maximal element
 [g1,g2] = ndgrid( 1:size(a,1),1:size(a,2) );  %#Create all possible rows,cols
 linearIndex = sub2ind(size(a), g1(:),g2(:),index(:))  %#Linearize the index of the maximal elements
 value = b(linearIndex); %# Collect the maximal values from b

@RodyOldenhuis 关于内存消耗的说法是正确的。这是一种内存效率更高的 for 循环方法:(可能会或可能不会运行得更快,请自行检查)。

 vals = zeros(size(a(:,:,1)));
 [~,indexOfMax] = max(a,[],3);
 for i=1:size(a,1)
    for j=1:size(a,2)
        vals(i,j) = b(i,j, indexOfMax(i,j));
    end 
 end

关于matlab - 从一个数组中获取最大值并在另一个数组中找到它的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13064788/

相关文章:

java - 从 Matlab 调用 "main"Java 方法并等待完成

arrays - 如何在Matlab中创建一个数组并同时运行一个函数?

string - 使用 strrep 删除字符串

MySQL只带回最新记录

sql - hive sql查找最新记录

python - numpy.max 函数有什么作用?

c - 4 功能找到最低/最高位置和值(value)

具有多个键或嵌套的 Matlab 映射

mysql - SQL从数据库中选择具有最大值的行并按2列分组

matlab - 您认为生物信息学的最佳语言是什么?