[Scilab-users] Peaks and positions
Samuel Gougeon
sgougeon at free.fr
Sat Jan 26 17:46:35 CET 2013
Le 26/01/2013 17:00, constantina a écrit :
> Sorry, I know is a basic question, i now the answer in matlab but not in
> scilab.... What is the function that let me find "peaks " in a matrix and
> the position of the peaks???
Here is a possible solution, including peaks on the borders:
m = rand(6,6)
M = [m(2,:) ; m ; m($-1,:) ];
M = [M(:,2) M M(:,$-1)];
pC = M(2:$-1,2:$-1)>M(1:$-2,2:$-1) & M(2:$-1,2:$-1)>M(3:$,2:$-1);
pR = M(2:$-1,2:$-1)>M(2:$-1,1:$-2) & M(2:$-1,2:$-1)>M(2:$-1,3:$);
isPeak = pC & pR
find(isPeak) // returns linearized indices of peaks
m(~isPeak) = 0 // to show only peaks
giving:
-->m = rand(6,6)
m =
0.0437334 0.7783129 0.8415518 0.5618661 0.3873779
0.2615761
0.4818509 0.2119030 0.4062025 0.5896177 0.9222899
0.4993494
0.2639556 0.1121355 0.4094825 0.6853980 0.9488184
0.2638578
0.4148104 0.6856896 0.8784126 0.8906225 0.3435337
0.5253563
0.2806498 0.1531217 0.1138360 0.5042213 0.3760119
0.5376230
0.1280058 0.6970851 0.1998338 0.3493615 0.7340941
0.1199926
-->M = [m(2,:) ; m ; m($-1,:) ];
-->M = [M(:,2) M M(:,$-1)];
-->pC = M(2:$-1,2:$-1)>M(1:$-2,2:$-1) & M(2:$-1,2:$-1)>M(3:$,2:$-1);
-->pR = M(2:$-1,2:$-1)>M(2:$-1,1:$-2) & M(2:$-1,2:$-1)>M(2:$-1,3:$);
-->isPeak = pC & pR
isPeak =
F F T F F F
T F F F F F
F F F F T F
F F F T F F
F F F F F T
F T F F T F
-->find(isPeak) // returns linearized indices of peaks
ans =
2. 12. 13. 22. 27. 30. 35.
-->m(~isPeak) = 0 // to show only peaks
m =
0. 0. 0.8415518 0. 0. 0.
0.4818509 0. 0. 0. 0. 0.
0. 0. 0. 0. 0.9488184 0.
0. 0. 0. 0.8906225 0. 0.
0. 0. 0. 0. 0. 0.5376230
0. 0.6970851 0. 0. 0.7340941 0.
Regards
Samuel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20130126/16077853/attachment.htm>
More information about the users
mailing list