-
Notifications
You must be signed in to change notification settings - Fork 0
/
find_the_width.m
41 lines (36 loc) · 978 Bytes
/
find_the_width.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function [Width,w1,w2,xo,x1,x2,slope1,slope2]=find_the_width(x,y,width_index,xo)
% Code based on Tom O'Haver (toh@umd.edu) Version 2, July 2016
%
% input x,y, find the width and corresponding x_coordes of the
% max/width_index around xo, if xo is omitted, it is the x position
% corresponding to the maximum y-value; also output the sloop if needed.
if nargin==3
%xo=x(val2ind(y,max(y)));
xo=0;
end
try
indmax=val2ind(x,xo);
maxy=y(indmax);
oy=y-maxy/width_index;
n=indmax;
while oy(n)>0,
n=n-1;
end
x1=interp1([y(n) y(n+1)],[x(n) x(n+1)],maxy/width_index);
slope1=(y(n+1)-y(n))./(x(n+1)-x(n));
n=indmax;
while oy(n)>0,
n=n+1;
end
x2= interp1([y(n-1) y(n)],[x(n-1) x(n)],maxy/width_index);
slope2=(y(n-1)-y(n))./(x(n-1)-x(n));
Width=x2-x1;
w1=xo-x1;
w2=x2-xo;
catch
Width=NaN;
w1=NaN;
w2=NaN;
x1=NaN;
x2=NaN;
end