Finiding Peaks and plotting in 3D

조회 수: 2 (최근 30일)
Kondiik
Kondiik 2013년 11월 4일
편집: A Jenkins 2013년 11월 4일
Hello everyone I have two problems with my project first is: 1) how i can plot tx, ty and tz? 2) I have to find peaks (I wrote program which check values in matrix 49x49. if "o" value is greater 8 times than all numbers around then that's the peak. Loop unfortunately doesn't work and I can't find a mistake
1 2 3
47 x x x
48 x o x
49 x x x
My program
%generate a reasonable terrain from a function
tx =linspace(-30, 30, 49*49);
ty = tx;
[xx, yy] = meshgrid(tx, ty);
tz = % I didnt paste it here because data from .m file contain 2401 values.
figure(1);
mesh(tx, ty, tz);
figure(2);
contour(xx, yy, tz);
for row = 2:48
for column = 2:48
p_c = 0;
t_c = 0;
for n = row - 1:row + 1
for m = column - 1:column + 1
if(tz(row, column) > tz(n, m))
p_c = p_c+1;
elseif(tz(row, column) < tz(n, m))
t_c = t_c+1;
end
end
end
if(p_c > 7)
disp( sprintf( 'Peak found at row %d column %d', row, column));
elseif(t_c > 7)
disp( sprintf( 'Trough found at row %d column %d', row, column));
end
end
end
  댓글 수: 4
Image Analyst
Image Analyst 2013년 11월 4일
Can you use imreagionalmax() in the Image Processing Toolbox?
Kondiik
Kondiik 2013년 11월 4일
편집: Kondiik 2013년 11월 4일
no I have to find it almost "by hand". That's the problem. Last chapter was loops and this one is 3D plotting so he wants use us bothchapters, not ready function in matlab. That's is why I thing many ppl will fail this class.

댓글을 달려면 로그인하십시오.

답변 (1개)

A Jenkins
A Jenkins 2013년 11월 4일
편집: A Jenkins 2013년 11월 4일
I ran your code and it works fine for me as long as I change the first line from
tx =linspace(-30, 30, 49*49);
to
tx =linspace(-30, 30, 49);
_____________________________________________________________________
I get the following:
Trough found at row 12 column 27
Peak found at row 20 column 21
Peak found at row 25 column 35
Trough found at row 27 column 14
Trough found at row 28 column 27
Peak found at row 38 column 25
These match what I see in the figures generated.
_____________________________________________________________________
(Though you might want to print out the values of tx(row) and ty(column) instead of just row and column, so it matches the indicies on your plots.)
Trough found at x=-16.250 y=2.500
Peak found at x=-6.250 y=-5.000
Peak found at x=0.000 y=12.500
Trough found at x=2.500 y=-13.750
Trough found at x=3.750 y=2.500
Peak found at x=16.250 y=0.000

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by