How do I fit an exponential equation to raw data

8 visualizaciones (últimos 30 días)
Pierce Hart
Pierce Hart el 18 de Feb. de 2018
Editada: Jos (10584) el 19 de Feb. de 2018
I have been given raw data from a hurricane with the x component, radius, x=59:803 and Y component, pressure, data varying from around 990 to 1020. I have an equaiton y=exp(-A/(x^B)) and want to find coefficients A and B from the raw data. I did try applying fit and to no avail. I'm unfamiliar with these functions so perhaps I was using them incorrectly.
I hope you can help, Thanks.
PH

Respuesta aceptada

Jos (10584)
Jos (10584) el 18 de Feb. de 2018
Editada: Jos (10584) el 19 de Feb. de 2018
This should get you started:
% some data
x = 1:20 ;
y = exp(-10 ./ (x .^ 1.1)) ;
yr = y + randn(size(y))/10 ; % add noise
% fit procedure
g = fittype(@(A,B,x) exp(-A ./ (x.^B)))
f = fit(x(:),yr(:), g )
% result
yh = f(x) ;
plot(x,yr,'bo',x,y,'b:.',x,yh,'rs-')
For more information, read the documentation on fit.
  3 comentarios
Pierce Hart
Pierce Hart el 18 de Feb. de 2018
Hey Jos,
Thanks for your answer. If I simply use what you provide I have an erorr in my code.I follow the outline of what you're doing and sturggle to see where I'm going wrong. I've attached my data and script so you can see.
Jos (10584)
Jos (10584) el 19 de Feb. de 2018
What is the exact error you get?
(btw I made a mistake in my function, which I fixed)

Iniciar sesión para comentar.

Más respuestas (1)

Star Strider
Star Strider el 18 de Feb. de 2018
You can use the fminsearch function to do the nonlinear regression.
The Code
P = load('pressure.mat.txt');
R = load('radius.mat.txt');
Pressmb = P.Pressmb;
Radkm = R.Radkm;
PresRad = @(b,r) exp(-b(1)./(r.^b(2))); % Objective Function
B = fminsearch(@(b) norm(Pressmb - PresRad(b,Radkm)), [1, 1]);
RadV = linspace(min(Radkm), max(Radkm));
figure
plot(Radkm, Pressmb, 'pg')
hold on
plot(RadV, PresRad(B, RadV), '-r')
hold off
xlabel('Radius (km)')
ylabel('Pressure (mb)')
legend('Data', 'Fitted Data', 'Location','NW')
text(440, 997, sprintf('P(R) = e^{%.2f/(%.5f\\cdotR)}',B))
grid
The Plot

Categorías

Más información sobre Linear and Nonlinear Regression en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by