【发布时间】:2020-03-11 00:51:12
【问题描述】:
我想找到通用代码以在 MATLAB 或 Octave 的 N 维数组中查找所有局部最小值。
对于二维数组,一个粗略的想法是
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
(当然,数组的末端需要用不同的条件来处理,但为了示例的简单,我忽略了这一点。)
有没有办法制作一个处理任意维度的函数?我确定有一个,因为许多用于处理数组的内置函数可以处理任意维度,但我不知道如何处理。
【问题讨论】:
-
如果找到区域最小值就够了,镜像包上有
imregionalmin。它适用于任意数量的维度。 -
你知道域中每个维度的界限吗?
-
carandraug,谢谢!我没有意识到这一点。 SecretAgentMan,维度是可变的。为什么我需要提前知道呢?我总能用 size() 找到它。
标签: arrays matlab octave minimum