Ok, I think it's good now :)

Le jeudi 02 juillet 2009 à 22:44 +0200, Søren Hauberg a écrit :

> tor, 02 07 2009 kl. 22:36 +0200, skrev Autiwa:
> > I think that the last 3 mail (this one count) were only in private
> > conversation
> 
> Ohh, I didn't notice. I'm CC'ing the list.
> 
> > Here is the program with comments in english, maybe less complete, and
> > with english error, because I talk easier in french...
> 
> Thanks
> 
> > I have also added the licence.
> 
> You have added:
> 
> %## This program is public domain. (GPL)
> 
> I hate to be focused on boring license stuff, but we need this to be
> correct. The GPL is different from the public domain. So, either put it
> in the public domain or release it under the GPL. You have to decide
> which you prefer.
> 
> Autiwa has suggested that this function goes in the 'signal' package. I
> don't really have an opinion on this. What does the rest of the people
> on this list think?
> 
> Søren

<<attachment: face-smile.png>>

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Function that return the full width at half maximum
%## This program is public domain.
% x: define a list of abscisses. If this doesn't exist, the first test create a list that will contain a list of indices to allow the function to return a width that will be in fact a difference between two indices
% f: data of the function from wich we want the fwhm
% In addition, the function will return a warning if the fwhm doesn't exist, and return 0 as fwhm
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function FWHM = fwhm(x,f)
if nargin < 2
	f = x;
	x=[1:length(f)];
end

[fmax,ifmax]=max(f);
f_renorm = f-0.5*fmax;
ind = find(f_renorm(1:end-1).*f_renorm(2:end) <=0);%if the product is negative, this means that tha "half-mawimum" is between theses two values
if length(ind) == 2
%we make a linear regression between the two values to get a more precise estimation of the fwhm. 
	x1=(0.5*fmax-f(ind(1)+1))*(x(ind(1)+1)-x(ind(1)))/(f(ind(1)+1)-f(ind(1)))+x(ind(1)+1);
	x2=(0.5*fmax-f(ind(2)+1))*(x(ind(2)+1)-x(ind(2)))/(f(ind(2)+1)-f(ind(2)))+x(ind(2)+1);
	FWHM=x2-x1;
else
	warning('FWHM is undefined, check if there is an impulsion. FWHM is set to 0')
	FWHM=0;%fwhm is set to 0 if it doesn't exist, to avoid errors in the rest of the programme. The warning is here to tell to the user that there is a problem.
end
------------------------------------------------------------------------------
_______________________________________________
Octave-dev mailing list
Octave-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/octave-dev

Reply via email to