how to enter equation into matrix column and refer to adjacent column.
조회 수: 2 (최근 30일)
이전 댓글 표시
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
댓글 수: 3
Walter Roberson
2017년 12월 15일
Perhaps you just want
A = linspace(0, 1.1, 1000);
Matrix(1,:) = A;
채택된 답변
Matthew
2017년 12월 15일
If I understand what you're attempting to do, you can replace the 'A' for loop with one line
A = linspace(0, 1.1, 1000);
B can then be calculated as
B= feval(f,A);
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!