# How can I find the width of the peaks when presented with a digital signal-like plot?

1 回表示 (過去 30 日間)
Akhil Kallepalli 2019 年 11 月 11 日
コメント済み: Akhil Kallepalli 2019 年 11 月 11 日
My problem requires the measurement of the extent of these peaks (attached .fig and .jpg plot files) with respect to the base of the peaks (not FWHM).
For example, the first peak between (X=) 20 and 40 is spread across 32-36 X values. Therefore, my results should be 4.
This requires automation as it fits into a bigger problem statement I am working on.

サインインしてコメントする。

### 採用された回答

Daniel M 2019 年 11 月 11 日

Use the pulsewidth function with the argument MidPercentReferenceLevel set to 0 or 1 (the lowest value). Here is an example:
x = 1:50;
y = zeros(size(x));
y(33:35) = 1;
width = round(pulsewidth(y,1,'MidPercentReferenceLevel',1,'Tolerance',0.1));
width =
4
H = openfig('Query.fig');
C = get(H,'Children');
x = C(4).XData;
y = C(4).YData;
width = round(pulsewidth(y,1,'MidPercentReferenceLevel',1,'Tolerance',0.1))
width =
4 5 6 5
Alternatively, if your data contains only ones and zeros:
start1 = strfind([0,y],[0 1]);
end1 = strfind([y,0],[1 0]);
width = end1-start1+2
width =
4 5 6 5
##### 1 件のコメント-1 件の古いコメントを表示-1 件の古いコメントを非表示
Akhil Kallepalli 2019 年 11 月 11 日
Works like a charm! Thank you :-)

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeDescriptive Statistics についてさらに検索

R2018b

### Community Treasure Hunt

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

Start Hunting!

Translated by