Finding Best Fit for Log Scaled Graphs

2 visualizaciones (últimos 30 días)
Chun Kit Choi
Chun Kit Choi el 27 de Oct. de 2020
Respondida: Star Strider el 27 de Oct. de 2020
Hi, I am attempting to find the best fit for a log scaled graph but have no idea how to do it. My code is as below,
x = [0, 0.00027036151034654, 0.00115093883458806, 0.00223432233808507, 0.00539981900723518, 0.00809536518833309, 0.0111270389729589, 0.014777933095254, 0.0189175724121603, 0.0235573556054278, 0.0287025567374752, 0.0343600870656987, 0.0582919612991634, 0.0682154843903124, 0.0790320917901928, 0.0914334718128318, 0.104973874288574, 0.119722291281348, 0.135699592328357, 0.240771355163788, 0.278078798463323, 0.314454995935481, 0.561768676836072]
y = [0.30371074055921, 0.290537098717707, 0.324374702814966, 0.337252335934006, 0.38897792790656, 0.403745877906912, 0.415277428739248, 0.427209812186528, 0.438112837361668, 0.448214463712894, 0.457622869575205, 0.466422006319539, 0.51823177314633, 0.526699880477541, 0.534668807004341, 0.543031975970824, 0.55093440322382, 0.558408580520752, 0.565435121097348, 0.622450007115967, 0.631025115825886, 0.637361264649512, 0.685778962718182]
set(gca,'YScale','log')
set(gca,'XScale','log')
plot(x,y)
I tried using polyfit but can't seem to find the right approach to get a best fit still. I still want to use the log-scaled graph, so I think simply logging the x and y values doesn't work too.
Any help will be much appreciated!!!

Respuestas (1)

Star Strider
Star Strider el 27 de Oct. de 2020
It is best to fit the power function using a nonlinear approach:
x = [0, 0.00027036151034654, 0.00115093883458806, 0.00223432233808507, 0.00539981900723518, 0.00809536518833309, 0.0111270389729589, 0.014777933095254, 0.0189175724121603, 0.0235573556054278, 0.0287025567374752, 0.0343600870656987, 0.0582919612991634, 0.0682154843903124, 0.0790320917901928, 0.0914334718128318, 0.104973874288574, 0.119722291281348, 0.135699592328357, 0.240771355163788, 0.278078798463323, 0.314454995935481, 0.561768676836072]
y = [0.30371074055921, 0.290537098717707, 0.324374702814966, 0.337252335934006, 0.38897792790656, 0.403745877906912, 0.415277428739248, 0.427209812186528, 0.438112837361668, 0.448214463712894, 0.457622869575205, 0.466422006319539, 0.51823177314633, 0.526699880477541, 0.534668807004341, 0.543031975970824, 0.55093440322382, 0.558408580520752, 0.565435121097348, 0.622450007115967, 0.631025115825886, 0.637361264649512, 0.685778962718182]
objfcn = @(b,x) b(1).*x.^b(2);
[B,resnorm] = fminsearch(@(b) norm(y - objfcn(b,x)), rand(2,1))
figure
plot(x, y, 'p')
hold on
plot(x, objfcn(B,x), '-r')
hold off
grid
hold off
text(0.25, 0.45, sprintf(' y = %.3f\\cdotx^{%.3f}', B))
figure
loglog(x, y, 'p')
hold on
plot(x, objfcn(B,x), '-r')
hold off
grid
hold off
text(5E-4, 0.45, sprintf(' y = %.3f\\cdotx^{%.3f}', B))
producing (for the loglog plot):
.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by