急急急!!!求助Matlab高手!我是新手,麻烦高手们帮忙看一下是哪里出错了!

错误提示???Undefinedfunctionormethod'xEnd'forinputargumentsoftype'double'.Errorin==>DIat5... 错误提示??? Undefined function or method 'xEnd' for input arguments of type 'double'.
Error in ==> DI at 54
d=sqrt((xEnd(i)-xEnd(j))^2+(yEnd(i)-yEnd(j))^2);

代码:
for i=1:x
for j=1:y
if(out1==1) %%%%%%%%out1是矩阵
xEnd(e)=i;
yEnd(e)=j;
end
end
end
E1=E;
for i=1:E-1
for j=i+1:E
d=sqrt((xEnd(i)-xEnd(j))^2+(yEnd(i)-yEnd(j))^2);
if d<16
E1=E1-2;
end
end
end

这是一段去除图像伪特征点的算法,xEnd(e)和yEnd(e)是用来提取坐标的函数。不知道声明的是否正确。我提取像素值为1的点的坐标,定义了两个函数,但是用这两个函数的时候出了问题。
高手们有没有比较好的去除伪特征点的方法?我做的手写体数字识别,现在正纠结于去除伪特征点的方法,我用for循环写了一些算法,但是运行得太慢。
多谢!!!
展开
 我来答
Septembercacti
2011-04-20
知道答主
回答量:8
采纳率:0%
帮助的人:12.6万
展开全部
我帮你修改了一下你试试,应该没有什么问题了。
End=zeros(2,x);
for i1=1:x
for j1=1:y
if(out1==1)
End(:,e)=[i1,j1];
end
end
end
d=zeros(E,E);
E1=E;
for i=1:E-1
for j=i+1:E
d(i,j)=norm(End(:,i)-End(:,j));
if d<16
E1=E1-2;
end
end
end

还有一种更简单的方法:
[m,n]=find(out1); %%提取像素值为1的点
d=zeros(E,E);
E1=E;
for i=1:E-1
for j=i+1:E
d(i,j)=sqrt((m(i)-m(j))^2+(n(i)-n(j))^2);
if d<yz
E1=E1-2;
end
end
end
这样经过向量化之后,你的程序也会快不少。
我跟你是同道中人,加油!
wacs5
2011-04-19 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2810万
展开全部
极有可能的问题:
你的out1不等于1
导致你的xEnd和yEnd都没有赋值,导致形成一个没有定义的量。

你可以在那个if里面加一些输出信息,看看有没有东西输出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式