Difficulty in extracting the particular variable value (a_mean, a_std) from the code

I want to fit an quadratic plateau equation and find the statistics of the parameters.
The form of equation are given as:
y=a*(x)^2+b*(x)+c, x < xc(Ymax)
y=yp, x >= xc(Ymax)
x=[0,40,80,100,120,150,170,200],
y=[1865,2855,3608,4057,4343,4389,4415,4478]
The code which I have tried for this purpose is given as:
function Fiting_ex()
global a_iter b_iter c_iter
a_iter = 0;
b_iter = 0;
c_iter = 0;
x=[0; 40; 80; 100; 120; 150; 170; 200];
y=[1865; 2855; 3608; 4057; 4343; 4389; 4415; 4478];
X = [x.^2 x ones(numel(x),1)];
A = y\X;
a0=A(1);
b0=A(2);
c0=A(3);
B0 = [a0; b0; c0];
[Bm,normresm] = fminsearch(@(b) myfun(b,x,y),B0);
a=Bm(1);
b=Bm(2);
c=Bm(3);
xc=-b/(2*a);
p=c-(b^2/(4*a));
yfit = zeros(numel(x),1);
for i=1:numel(x)
if (x(i) < xc)
yfit(i) = a.*x(i).^2+ b*x(i)+c;
else
yfit(i) = p;
end
end
plot(x,yfit,'*')
hold on;
plot(x,y);
hold off
% Statistic on optimization process
a_mean = mean(a_iter(2:end)); % mean value
a_var = var(a_iter(2:end)); % variance
a_std = std(a_iter(2:end)); % standard deviation
function f = myfun(Bm, x, y)
global a_iter b_iter c_iter
a_iter = [a_iter Bm(1)];
b_iter = [b_iter Bm(2)];
c_iter = [c_iter Bm(3)];
yf = Bm(1)*(x).^2+Bm(2)*(x)+Bm(3);
a=Bm(1);
b=Bm(2);
c=Bm(3);
xc=-b/(2*a);
p=c-(b^2/(4*a));
yfit = zeros(numel(x),1);
for i=1:numel(x)
if (x(i) < xc)
yfit(i) = a.*x(i).^2+ b*x(i)+c;
else
yfit(i) = p;
end
end
f = norm(y - yfit);
When I run this script, no error have shown in command window, but I am unable to get the values of the variables (a_mean, a_std, a_var, yfit), I mean it did not display the values of these variables. How can I extrat these value from this code.
I have another query related to the equation that if I want to repalce 'x' with 'x+n', where n is also a unknown parameter. Also I need to find the mean, standard deviation of this parameter (n) too. Then what will be the changes in above code.
Kindly help me for this...

2 件のコメント

KALYAN ACHARJYA
KALYAN ACHARJYA 2019 年 1 月 3 日
particular variable value
Which variable?
madhuri dubey
madhuri dubey 2019 年 1 月 3 日
Kindly read the whole question I hope you will understand what I want to find or what is my difficulties.

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

 採用された回答

KALYAN ACHARJYA
KALYAN ACHARJYA 2019 年 1 月 3 日
編集済み: madhan ravi 2019 年 1 月 3 日
Answer of this question
When I run this script, no error have shown in command window, but I am unable to get the values of the variables (a_mean, a_std, a_var, yfit), I mean it did not display the values of these variables. How can I extract these value from this code.
Use the following at end of the code
fprintf('The value of a_mean is %.2f',a_mean);
fprintf('The value of a_std is %.2f',a_std);
fprintf('The value of yfit is %.2f',yfit);
Here %f represents floating number, for decimal you can use %d also in palce of %.2f

1 件のコメント

madhuri dubey
madhuri dubey 2019 年 1 月 3 日
編集済み: madhan ravi 2019 年 1 月 3 日
Thank you... And what about the second portion of my question i.e. what will be the changes in this code if I want to replace 'x' with 'x+n' in the equation (a*x^2+b*x+c) .

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeGet Started with MATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by