フィルターのクリア

Plotting normal curve and a third order polynomial

3 ビュー (過去 30 日間)
daniel
daniel 2013 年 5 月 27 日
Hello, i'm new with matlab and i have a problem with my code, i got this
y=[70,73,62,67,70,72,67,72,71,73,70,75,66,69,67,72,67,69,71,71,68,74,73,62,65,75,67,64,72,73];
max(y);
min(y);
bins=min(y):max(y);
numel(y);
x=0:1:29;
numel(x);
polyfit(x,y,2);
best_y=-0.0030*x.^2+0.0851*x+691891;
%polyfit(x,y,3);
%best_y=(0.0011*x.^3-0.0499*x.^2+0.6198*x+68.0076);
%plot(x,best_y);
u=mean(y);
s=std(y);
normal_y=30*((exp((-(x-u).^2)/(2*s.^2)))/(s*(2*3.1416).^(0.5)));
plot(x,best_y,x,normal_y);
my first tried was with the third order polynomial and then i tried it with the second order one. when i got the graph it looked like 2 parallel lines , i know they have to be close. i dont know what is the problem with my code
thanks a lot

回答 (2 件)

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 5 月 27 日
編集済み: Azzi Abdelmalek 2013 年 5 月 27 日
The problem is this line
best_y=-0.0030*x.^2+0.0851*x+691891;
It should be
best_y=-0.0030*x.^2+0.0851*x+69.1891;
%or
v=polyfit(x,y,2);
best_y=sum(bsxfun(@times,[x.^2;x;ones(1,numel(x))],v'))
plotyy(x,y,x,best_y)
%or for order 3
v=polyfit(x,y,3);
best_y=sum(bsxfun(@times,[x.^3; x.^2;x;ones(1,numel(x))],v'))
plotyy(x,y,x,best_y)
  2 件のコメント
David Sanchez
David Sanchez 2013 年 5 月 27 日
p = polyfit(x,y,2); % p is an array with polynomial coefficient
best_y = p(1)*x.^2+p(2)*x+p(3); %
daniel
daniel 2013 年 5 月 27 日
hello Azzi thanks for the reply.
i fixed "691891" now the top looks kinda curved but still they are apart like one on top of the graph and the other one at the bottom.
And.
best_y=sum(bsxfun(@times,[x.^2;x;ones(1,numel(x))],v'))
Well as i mentioned im really new with matlab so i got lost with that code hehe.( but thanks a lot )
the curious part is that when i plot the best_y by itself it looks good upside-down parabola) , same with the normal_y which looks like half of the normal curve. but as soon as i plotted them together one is on top semi-curve and the other one is a line at the bottom. is that ok ?
thanks guys,

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


David Sanchez
David Sanchez 2013 年 5 月 27 日
what's your y data? Your code is full of useless stuff and "magic" numbers.
Add this at the end of your code:
axis([0 30 69 70])
You'll see the Gaussian shape you look for
  1 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 5 月 27 日
David, maybe you are answering another question.

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

カテゴリ

Help Center および File ExchangePolynomials についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by