使用MATLAB在Profile上查找最小和最大点

时间:2013-02-06 16:05:14

标签: matlab signal-processing

Profile

我已经通过以下代码

提取了船只横截面上的轮廓
 imshow(image); % image is not shown
 [cx,cy,c,xi,yi] = improfile;

这里c是沿剖面的强度,我用它们绘制它们:

 x=1:length(c);
 figure
 plot(x,c,'o')
 axis([0 45 80 150])

它看起来像我上传的那个。 c为33X1强度矢量,其中,c = [123 126 131 138 139 141 143 143 144 141 136 126 102 96 91 100 100 113 109 96 94 90 101 107 116 123 127 130 131 132 131 129 131];

我想检测c的索引以找到A(左侧最大值),B(右侧最大值),C(左侧最小值),D(rt侧最小值)和E(中间)点简介。

1 个答案:

答案 0 :(得分:1)

公共域(http://www.billauer.co.il/peakdet.html)中发布的函数peakdet似乎在第一次尝试时就已完成。您可以尝试使用该函数的第二个参数来更多/更少选择性。

c=[123 126 131 138 139 141 143 143 144 141 136 126 102 96 91 100 100 113 109 96 94 90 101 107 116 123 127 130 131 132 131 129 131];
[ma mi]=peakdet(c,1);

ma =
     9   144
    18   113
    30   132

mi =
    15    91
    22    90
    32   129

编辑:这个问题可能很有意思:How to differentiate between a double peak and a single peak array in MATLAB?