Hi everyone, I have a new reader and we talked about Full Width at Half Maximum - FWHM here (in the comments).
We developed a code for finding the FWHM of a given peak in a function, and now the code will be posted in this post.
function [fwhm_positions, fwhm_values] = fwhm(x, positions)
tp = positions; //assign the peak position into tp
t_aux = 1;
while x(tp) < 2*x(tp + t_aux),
t_aux = t_aux + 1;
end;
fwhm_positions = (tp - t_aux):(tp + t_aux);
fwhm_values = x((tp - t_aux):(tp + t_aux));
endfunction;
t = 1:1000;
m = 350;
s = 180;
x = exp(-(1/(2*s))*(t - m).^2); // 'x' is a gaussian function
plot(t, x);
plot(fwhm_positions, fwhm_values, 'r.-');
Now, look the result following.
Thanks CV, you helped us too much!
God bless you.
6 comments:
I copied the code into scilab editor, saved it and tried to execute it. It plots a gaussian, but yields an undefined variable for fwhm_positions here
plot(fwhm_positions, fwhm_values, 'r.-');
so the red dots don't plot. It looks as if the function does not execute. This is what I copied and tried to run. Also ran it from the console--same result
function [fwhm_positions, fwhm_values] = fwhm(x, positions)
tp = positions; //assign the peak position into tp
t_aux = 1;
while x(tp) < 2*x(tp + t_aux),
t_aux = t_aux + 1;
end;
fwhm_positions = (tp - t_aux):(tp + t_aux);
fwhm_values = x((tp - t_aux):(tp + t_aux));
endfunction;
t = 1:1000;
m = 350;
s = 180;
x = exp(-(1/(2*s))*(t - m).^2); // 'x' is a gaussian function
plot(t, x);
plot(fwhm_positions, fwhm_values, 'r.-');
What to do??
I validated that the function does not execute. After execution, variables after the endfunction can be validated from the console, but t_aux and tp are undefined.
Why does not the function execute?
Thanks
Hi Gery,
try it:
t = 1:1000;
m = 350;
s = 180;
x = exp(-(1/(2*s))*(t - m).^2); // 'x' is a gaussian function
plot(t, x);
[fwhm_positions, fwhm_values] = fwhm(x, m);
plot(fwhm_positions, fwhm_values, 'r.-');
After 'endfunction'
Thanks for your contribution.
Well, I tried it as suggested and get the same error. I copy the suggested code from the web page into the scilab editor, save it, and execute it.
in console we see
-->exec('/fwhmtest.sce', -1)
plot(fwhm_positions, fwhm_values, 'r.-');
!--error 4
Undefined variable: fwhm_positions
at line 19 of exec file called by :
exec('/fwhmtest.sce', -1)
Obviously, you don't get this result. I don't see any error in what I am doing, but the result is non-positive.
My friend Gary, this is the full code:
function [fwhm_positions, fwhm_values] = fwhm(x, positions)
tp = positions; //assign the peak position into tp
t_aux = 1;
while x(tp) < 2*x(tp + t_aux),
t_aux = t_aux + 1;
end;
fwhm_positions = (tp - t_aux):(tp + t_aux);
fwhm_values = x((tp - t_aux):(tp + t_aux));
endfunction;
t = 1:1000;
m = 350;
s = 180;
x = exp(-(1/(2*s))*(t - m).^2); // 'x' is a gaussian function
plot(t, x);
[fwhm_positions, fwhm_values] = fwhm(x, m);
plot(fwhm_positions, fwhm_values, 'r.-');
Try to execute the code using "ctrl + l", directly from the editor.
Thank you for your contribution, again.
See you.
Hi Sheep!
Thanks for sharing!
Post a Comment