matlab二次曲线拟合

电容c=10^-6*[00.471.472.473.674.24.675.876.87](F);对应的电流i=[0.3690.3420.2890.2420.2040.19... 电容c=10^-6*[0 0.47 1.47 2.47 3.67 4.2 4.67 5.87 6.87] (F);对应的电流i=[0.369 0.342 0.289 0.242 0.204 0.198 0.202 0.234 0.274] (A);求描绘二次拟合出来的c与i^2的拟合曲线。我先开始二次拟合的参数精度不够,一次项和常数项参数都是0,不满足要求。 展开
 我来答
匿名用户
2014-03-28
展开全部

并不是精度不够,后两项的系数也并不是0,只是结果显示有效数字位数的问题。

>> num2str(f)

ans =

5246096810.4814     -45015.413449487     0.13696632426218

 

>> plot(c,i.^2,'r.',c,polyval(f,c))

更多追问追答
追问
我也做到了你这步,是用函数van做的,但是你看,描绘出的曲线不是光滑的呀
追答

你之前问的问题是“一次项和常数项参数都是0”,并不是曲线是否平滑。关于系数为0的问题我前面解释过了。

 

曲线不光滑是因为取的点少,看起来折线的感觉比较明显。其实MATLAB画的都是折线,只不过点比较密集的时候看起来就平滑了。例如,你可以试试把

    plot(c,i.^2,'r.',c,polyval(f,c))

改成

    c1=linspace(min(c),max(c),200);

    plot(c,i.^2,'r.',c,polyval(f,c1))

 

楼下所谓“cftool结果会好一些”属于很流于表面的说法。cftool只是提供了一个进行拟合的GUI,该函数自身没有任何拟合的算法,都是调用其它的算法。只要你用的是多项式拟合,用cftool与polyval的结果不会有任何区别,差别只在于一个是通过GUI来做,而另一个是直接调用命令而已。GUI的方式可能对于新手较为适合,但对于熟悉编程的人来说,有时反而感到太繁琐。

comeon2012640
2014-03-28
知道答主
回答量:43
采纳率:0%
帮助的人:8.5万
展开全部
试试用cftool,这个结果会好一些,输入横纵坐标分别为c与i^2就可以,你还可以看到拟合的曲线结果图,里面可以选择拟合的公式
追问
cftool能够得到曲线的最小值、零点吗?如何做呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式