Hi all. I am a Matlab beginner trying to find full width half max. Below is my code. I start with my .csv file, identify x- and y-values, fit a gaussian curve, and find half max. Next, I added x-values at evenly spaced small increments to a column in a matrix (defined as A). I want the second column (B) to find the y-values at the given x-values using the equation found with the gaussian fit (in other words, the x-value at a given row will be used in the equation to find the y-value in the adjacent column). I am stuck on the for loop here. Then, I think I can use the "find" command to find my 2 x-values to find the full width, but this may need some help too. Thank you for your help!
data = load ('Practice.csv');datax = data(:,2);datay = data(:,5);f = fit(datax, datay,'gauss1')plot(f,datax,datay)yfitted = feval(f,datax);hold on[ypk] = findpeaks(yfitted)HalfMax = 0.5*ypk Matrix = zeros(2,1000);A = Matrix(1,:);for A =1:1000; x1= 0; x2= 1.1; n = 1000; A = linspace(x1, x2, n);end;B = Matrix(2,:); %%this is where I need help with a for loop please!
index1 = find(B <= HalfMax, 1, 'first');index2 = find(B >= HalfMax, 1, 'last')fwhm = index2-index1
Best Answer