Local maxima in a matrix
조회 수: 5 (최근 30일)
이전 댓글 표시
I need to locate the peaks and valleys of numbers given in a large matrix. I need to compare a value in the matrix with the 8 surrounding values to determine if it is either a peak (maximum) or a valley (minimum). The matrix that I am using is 100X100 and the coordinates of the value will then need to be displayed in a table. For example: [3 6 2 5; 4 9 1 5; 7 3 5 4] has a peak of 9 at (2,2) and a valley of 1 at (3,2). Any ideas would be greatly appreciated.
댓글 수: 0
채택된 답변
Image Analyst
2014년 11월 29일
If you have the IMage Processing Toolbox, you are really in luck because there are two functions meant for exactly this situation: imregionalmax() and imregionalmin(). Here is how to use them:
grayImage = [3 6 2 5; 4 9 1 5; 7 3 5 4]
regionalMaxima = imregionalmax(grayImage)
regionalMinima = imregionalmin(grayImage)
In the command window, observe the results:
grayImage =
3 6 2 5
4 9 1 5
7 3 5 4
regionalMaxima =
0 0 0 0
0 1 0 0
0 0 0 0
regionalMinima =
1 0 0 0
0 0 1 0
0 0 0 0
If you want rows and columns of the max or mins, just use find():
[rows, columns] = find(regionalMaxima)
rows =
2
columns =
2
댓글 수: 0
추가 답변 (1개)
Azzi Abdelmalek
2014년 11월 29일
편집: Azzi Abdelmalek
2014년 11월 29일
a=[3 6 2 5; 4 9 1 5; 7 3 5 4]
n=size(a);
[mina,idx1]=min(a(:))
[ii1,jj1]=ind2sub(n,idx1)
[maxa,idx2]=max(a(:))
[ii2,jj2]=ind2sub(n,idx2)
댓글 수: 1
Mohammad Abouali
2014년 11월 29일
편집: Mohammad Abouali
2014년 11월 29일
This is not the answer. This gives the global min/max. He is asking for local one.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!