查找并标记矩阵冲浪的局部最小值和最大值

时间:2018-12-28 12:38:14

标签: matlab matrix

我得到一个分配,以生成一个随机矩阵(MXN)并将其表示为一个表面。之后,我必须找到并标记局部最小值和最大值。我不确定该怎么做。

因此,我设法创建了随机矩阵,并使用以下方法进行呈现:

M = randi([0 9],4,4); 
surf(M)

第一个问题是我用过:

lmaxM = islocalmax(M)
lmaxI = find(lmaxM)

效果不好,例如:

对于矩阵:

M =

 0     8     7     4
 1     1     9     7
 6     9     2     8
 3     5     4     1

islocalmax(M)给了我这个逻辑变量:

   0   0   0   0
   0   0   1   0
   1   1   0   1
   0   0   0   0

但是我应该得到:

   0   0   0   0
   0   0   1   0
   0   1   0   0
   0   0   0   0

无论如何,在获得逻辑矩阵之后,我使用以下方法拉出1的值的索引:

lmaxI = find(lmaxM);

接下来我该怎么做才能在表面上显示值?

这就是我现在得到的代码:

clear
M = randi([0 9],4,4)
surf(M)
lmaxM = islocalmax(M)
lmaxI = find(lmaxM)
lminM = islocalmin(M)
lminI = find(lminM)

谢谢;

2 个答案:

答案 0 :(得分:0)

函数islocalmax能够沿着指定的维度查找局部最大值。

  

默认情况下,islocalmax沿尺寸不等于1的第一个维度进行操作。

如果您拥有图像处理工具箱,则可以使用imregionalmax

答案 1 :(得分:0)

从matlab参考资料中指出,

localmaxima localminima

islocalmax()的语法

TF = islocalmax(A)  
TF = islocalmax(A,dim)  
TF = islocalmax(___,Name,Value)  
[TF,P] = islocalmax(___) 

说明

  

example TF = islocalmax(A)返回一个逻辑数组,当在相应的数组中检测到局部最大值时,其元素为1(true)   数组,表或时间表的元素。

     

TF = islocalmax(A,dim)指定A的维数。   例如,islocalmax(A,2)查找矩阵A每行的局部最大值。

islocalmin()的语法

TF = islocalmin(A)  
TF = islocalmin(A,dim)  
TF = islocalmin(___,Name,Value)  
[TF,P] = islocalmin(___) 

说明

  

example TF = islocalmin(A)返回一个逻辑数组,当在相应的数组中检测到局部最小值时,其元素为1(真)   数组,表或时间表的元素。

     

示例TF = islocalmin(A,dim)指定A的维数。例如,islocalmin(A,2)找到每个的局部最小值   矩阵A的行。

因此,如果矩阵具有多个值,则还应指定尺寸。因此,第二种语法将解决此问题。

lmaxM = islocalmax(M,4)
lminM = islocalmin(M,4)