yincar 发表于 2006-10-12 09:34

求助:关于拟合点的选区

我现在有一组数据(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 ,不是很明白,帮我看看上面有什么问题?

jimin 发表于 2006-10-12 09:39

int count;
matlab中不需要这样定义的,
初看还以为是c咯
自己先找本基础的书看看

yincar 发表于 2006-10-12 10:11

那楼上有什么高见!
我是刚用matlab不是很明白,给位高手可否指点一些。。

[ 本帖最后由 ChaChing 于 2010-4-4 16:49 编辑 ]

zhang_2wei 发表于 2006-10-12 10:11

直接栓调那一行就可以了

zhang_2wei 发表于 2006-10-12 10:14

i=0;
for count=0:length(erro_y)
      iferror_y<5
         nhy=z;
            i=i+1
      end
end
试试这个

yincar 发表于 2006-10-16 17:05

这个方法也不行 ,编译有问题。 请在指教。谢谢!!

那位高手指点一下啊! 现在我还没弄出来,真是烦燥。
小弟先谢谢了。

[ 本帖最后由 ChaChing 于 2010-4-4 16:52 编辑 ]

ChaChing 发表于 2010-4-4 18:03

整理老帖, 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)=[];

houxiaoyang 发表于 2010-4-4 20:46

回复 7楼 ChaChing 的帖子

LZ不看有人看,谢谢ChaChing,感谢

ChaChing 发表于 2010-4-4 21:15

回复 8楼 houxiaoyang 的帖子

谢谢鼓励! 不然真的有点心灰意冷
页: [1]
查看完整版本: 求助:关于拟合点的选区