在MATLAB / Octave中查找N维数组中的所有局部最小值

问题描述 投票:0回答:1

我想找到通用代码来查找MATLAB或Octave中N维数组中的所有局部最小值。

对于2D数组,一个大概的想法是

localmin = [];
for i=2:N-1
    for j=2:N-1
        if M(i,j)<=M(i,j+1) && M(i,j)<=M(i,j-1) && M(i,j)<=M(i+1,j) && M(i,j)<=M(i-1,j)
            localmin = [localmin,[i;j]];
        end
    end
end

(当然,需要用不同的条件来处理数组的末端,但是为了简单起见,我忽略了这一点。)

是否有一种方法可以使单个函数处理任意尺寸?我肯定有一个,因为许多用于处理数组的内置函数可以处理任意维,但是我不知道该如何处理。

arrays matlab octave minimum
1个回答
0
投票

您可以使用islocalmaxislocalmax。这些函数将沿着某个维在n维数组中找到局部最小值,并在这些局部最大值或最小值的位置返回一个带1的布尔数组。

通过在数据的多个方向上应用此函数,并找到这些布尔数组的交集(简单地为islocalmin,元素为明智的islocalmin),您可以找到本地峰的位置。

&

and

© www.soinside.com 2019 - 2024. All rights reserved.