我得到一个分配,以生成一个随机矩阵(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)
谢谢;
答案 0 :(得分:0)
答案 1 :(得分:0)
从matlab参考资料中指出,
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)