fitting data with power function

Hi,
I need to curve fit to data, which i had meassured. I must use method of least squares and for fitting i must use a „power function“ y= a*x^b ((ftype=fittype('power1')); I need to find the coefficients a and b. But i dont know how to do in Matlab, i try to write some m-scripts but it doesnt works.
Example of meassured data:
X=[-90; -80; -70; -60; -50; -40; -30; -20; -10;0; 10; 20; 30; 40; 50;60; 70; 80; 90]
Y=[-2.8691; -2.4261; -2.0042; -1.7497; -1.3936; -1.1392; -0.9356; -0.7321; -0.5286; 0; 0.3872; 0.6416; 0.8451; 1.0995; 1.3031; 1.6083;1.9136; 2.3207; 2.524]
I will be grateful for any idea or any help. Thank you very much.

1 Comment

did you check the command window, coefficients may be printed out there

Sign in to comment.

Answers (3)

Plotting your data it does not seem to fit a power function and seems linear. You can use the backslash operator to do least squares
doc mldivide
or in the plot window, use tools>basic fitting to fit a linear equation

4 Comments

This data was only example, i have a set of data and each data I will fit with power function, I find coefficient a and b, than I can compare data,this is the reason to power function.
you can use the backslash to find the coefficients, you will just have to transform your data using logarithms.
But i cannot use logarithmus, because i have a zero defined in my data, i try to use a logaritmus, but it doesnt work for zero, do you know how to write a script using logaritmus,and backslash for data with zero?
if you have zeros in your data, then maybe a different approach is warranted. If you can post some 'real' data then maybe a solution can be found

Sign in to comment.

Jana
Jana on 28 Jun 2011
Edited: Walter Roberson on 8 Apr 2018
Data : X=[-90; -80; -70; -60; -50; -40; -30; -20; -10;0; 10; 20; 30; 40; 50;60; 70; 80; 90]
Y=[-2.8691; -2.4261; -2.0042; -1.7497; -1.3936; -1.1392; -0.9356; -0.7321; -0.5286; 0; 0.3872; 0.6416; 0.8451; 1.0995; 1.3031; 1.6083;1.9136; 2.3207; 2.524]
other measurement:
x= =[-90; -80; -70; -60; -50; -40; -30; -20; -10;0; 10; 20; 30; 40; 50;60; 70; 80; 90]
y=[-2.8182 -2.6147 -2.4621 -2.1059 -1.8515 -1.6481 -1.2409 -0.9865 -0.7831 -0.0707 0.5398 0.8961 1.1504 1.4048 1.6083 1.9136 2.117 2.3206 2.5751]]
value -.0707 is something like offset, it must be deducted from all other data in y.
other measurement:
X=[-90; -80; -70; -60; -50; -40; -30; -20; -10;0; 10; 20; 30; 40; 50;60; 70; 80; 90]
Y= [-3.5306 -3.2762 -3.0218 -2.6656 -2.3604 -2.0042 -1.5462 -1.1392 -0.7831 -0.0707 0.7434 1.0995 1.6084 2.0663 2.5242 2.9821 3.2874 3.5418 3.9488]
value -0,0707 is ofsfset too, and it must be dedicated from other values in y.
i use this algoritm, but its ignore zero, so its wrong way !
close all
clear all
clc
x=[-90; -80; -70; -60; -50; -40; -30; -20; -10; 10; 20; 30; 40; 50;60; 70; 80; 90]';
y=[-2.8691; -2.4261; -2.0042; -1.7497; -1.3936; -1.1392; -0.9356; -0.7321; -0.5286; 0.3872; 0.6416; 0.8451; 1.0995; 1.3031; 1.6083;1.9136; 2.3207; 2.524]';
plot(x,y,'r-*')
lnx = log(abs(x));
lny = log(abs(y));
A = [lnx;ones(size(x))];
v = inv(A*A')*A*lny';
a = v(1);
b = exp(v(2));
hold on
u = 0:1:100;
plot(u,b*u.^a);
u = -100:1:0;
plot(u,-b*(-u).^a);
hold off
a
b
legend('namerena data', 'prolozeni dat',2)
If I use this data and plot as you show, it looks near linear. Why would you think this should be a power law relation?
x=[-90; -80; -70; -60; -50; -40; -30; -20; -10; 10; 20; 30; 40; 50;60; 70; 80; 90]';
y=[-2.8691; -2.4261; -2.0042; -1.7497; -1.3936; -1.1392; -0.9356; -0.7321; -0.5286; 0.3872; 0.6416; 0.8451; 1.0995; 1.3031; 1.6083;1.9136; 2.3207; 2.524]';
plot(x,y,'r-*')
pp = polyfit(x,y,1); % Fit a line to the data
yp = polyval(pp,x);
hold on
plot(x,yp,'b') % Plot the line in blue.

1 Comment

I need to compare coefficients,how can I have a coefficients from polyfit and polyval?
Because the comparison is the result of my thesis..

Sign in to comment.

Categories

Find more on Mathematics in Help Center and File Exchange

Products

Tags

Asked:

on 26 Jun 2011

Edited:

on 8 Apr 2018

Community Treasure Hunt

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

Start Hunting!