How do I fit an exponential equation to raw data

5 ビュー (過去 30 日間)
Pierce Hart
Pierce Hart 2018 年 2 月 18 日
編集済み: Jos (10584) 2018 年 2 月 19 日
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

採用された回答

Jos (10584)
Jos (10584) 2018 年 2 月 18 日
編集済み: Jos (10584) 2018 年 2 月 19 日
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 件のコメント
Pierce Hart
Pierce Hart 2018 年 2 月 18 日
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) 2018 年 2 月 19 日
What is the exact error you get?
(btw I made a mistake in my function, which I fixed)

サインインしてコメントする。

その他の回答 (1 件)

Star Strider
Star Strider 2018 年 2 月 18 日
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

カテゴリ

Help Center および File ExchangeLinear and Nonlinear Regression についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by