求助:关于拟合点的选区
我现在有一组数据(x,y),欲拟合一条曲线(x,z,b=polyfit(x,y,j);z=polyval(b,x);),条件是:
1.如果abs(z-y)<0.1,此数据点留下
如果abs(z-y)>0.1,此数据点删掉
这样从新组合成一组数据
然后再对这组新数据进行拟合
请问各位大侠有什么好办法吗?
我自己编的是如下方法
b=polyfit(x,y,n);
z=polyval(b,x);
erro_y=abs(z-y);
int count;
for(count=0;count<=length(erro_y);count++)
{int i=0;
if(error_y<5)
{nhy=z;
i++;
}
}
plot(x,y,'o',x,y,x,nhy,'r')
提示有这样的错误
Warning: Polynomial is badly conditioned. Remove repeated data points
or try centering and scaling as described in HELP POLYFIT.
(Type "warning off MATLAB:polyfit:RepeatedPointsOrRescale" to suppress this warning.)
> In C:\MATLAB6p5\toolbox\matlab\polyfun\polyfit.m at line 75
??? for(count=0;count<=length(erro_y);count++)
|
Error: ")" expected, ";" found.
由于我刚使用matlab ,不是很明白,帮我看看上面有什么问题? int count;
matlab中不需要这样定义的,
初看还以为是c咯
自己先找本基础的书看看 那楼上有什么高见!
我是刚用matlab不是很明白,给位高手可否指点一些。。
[ 本帖最后由 ChaChing 于 2010-4-4 16:49 编辑 ] 直接栓调那一行就可以了 i=0;
for count=0:length(erro_y)
iferror_y<5
nhy=z;
i=i+1
end
end
试试这个 这个方法也不行 ,编译有问题。 请在指教。谢谢!!
那位高手指点一下啊! 现在我还没弄出来,真是烦燥。
小弟先谢谢了。
[ 本帖最后由 ChaChing 于 2010-4-4 16:52 编辑 ] 整理老帖, LZ可能也不回来了! 做个结束吧!
1F/5F好像都是C的语法
b=polyfit(x,y,n); z=polyval(b,x); erro_y=abs(z-y);
aa=find(erro_y>0.1); x(aa)=[]; y(aa)=[];
回复 7楼 ChaChing 的帖子
LZ不看有人看,谢谢ChaChing,感谢回复 8楼 houxiaoyang 的帖子
谢谢鼓励! 不然真的有点心灰意冷
页:
[1]