How find FWHM for large numbers of plots?
2 views (last 30 days)
Show older comments
Here simply if i want to write the matlab code to find the fwhm (up to 4 or 5 digits) of like following curve, i have to find x values difference corresponding to average value of y. Since x values at average y do not lie at y data points hence i required interpolate values of x. Pls help regarding to this.
for example take below plot and data
clear all
clc
y=[];
for x=-4:5;
z=x.^2;
y=[y z];
end
y;
x=-4:5;
plot(x,y)
Here i have to find x values difference at y=12.5 to determine the fwhm ,of respective curve. How can i write in code?
Thank you.
0 Comments
Accepted Answer
Star Strider
on 26 Jul 2020
Try this:
x=-4:5;
for k = 1:numel(x)
z=x(k).^2;
y(k) = z;
end
[miny,idx] = min(y);
left_x = interp1(y(1:idx),x(1:idx), y(1)/2)
right_x = interp1(y(idx:end),x(idx:end), y(1)/2)
figure
plot(x,y)
hold on
plot([left_x right_x], [1 1]*y(1)/2, '+r')
hold off
There is no ‘full width-half-maximum’ because ther is no defined maximum. This code finds the approximate values for ‘full-width-half-minimum’ instead, since only that makes sense in this context.
.
5 Comments
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!