matlab编程中的数据越界问题
本人对程序一窍不通,请高手指点,在线急等。在matlab中运行定义的M函数文件后,出现错误:AttemptedtoaccessSz(13);indexoutofbound...
本人对程序一窍不通,请高手指点,在线急等。
在matlab中运行定义的M函数文件后,出现错误:
Attempted to access Sz(13);index out of bounds because numel(Sz)=12
出现错误的那段M函数文件代码如下:
for(x=1:fl)%获得分类情况:对分类元素进行排序
js=0;flsz(x)=0;
for(i=1:n)pd=1;
for(y=1:js)if(Sz(y)==i)pd=0;break;end;end
if(pd)if(js==0)y=0;end
for(j=1:n)if(R(i,j)>=lmd(x))js=js+1;Sz(js)=j;end;end
flsz(x)=flsz(x)+1;
Sz0(flsz(x))=js-y;
end
end
js=0;
for(i=1:flsz(x))
for(j=1:Sz0(i))Sz1(j)=Sz(js0+j);end (Matlab中说错误发生在这一句)
for(j=1:n)for(y=1:Sz0(i))if(xhsz(j)==Sz1(y))js0=js0+1;Sz(js0)=xhsz(j);end;end;end
end
for(i=1:n)xhsz(i)=Sz(i);end
end
请高手教我怎样更正错误的编程代码,万分感谢~! 展开
在matlab中运行定义的M函数文件后,出现错误:
Attempted to access Sz(13);index out of bounds because numel(Sz)=12
出现错误的那段M函数文件代码如下:
for(x=1:fl)%获得分类情况:对分类元素进行排序
js=0;flsz(x)=0;
for(i=1:n)pd=1;
for(y=1:js)if(Sz(y)==i)pd=0;break;end;end
if(pd)if(js==0)y=0;end
for(j=1:n)if(R(i,j)>=lmd(x))js=js+1;Sz(js)=j;end;end
flsz(x)=flsz(x)+1;
Sz0(flsz(x))=js-y;
end
end
js=0;
for(i=1:flsz(x))
for(j=1:Sz0(i))Sz1(j)=Sz(js0+j);end (Matlab中说错误发生在这一句)
for(j=1:n)for(y=1:Sz0(i))if(xhsz(j)==Sz1(y))js0=js0+1;Sz(js0)=xhsz(j);end;end;end
end
for(i=1:n)xhsz(i)=Sz(i);end
end
请高手教我怎样更正错误的编程代码,万分感谢~! 展开
4个回答
展开全部
js=0;
for(i=1:flsz(x))
for(j=1:Sz0(i))Sz1(j)=Sz(js0+j);end (Matlab中说错误发生在这一句)
for(j=1:n)for(y=1:Sz0(i))if(xhsz(j)==Sz1(y))js0=js0+1;Sz(js0)=xhsz
这里面的js=0;和下面的js0不对应呀,是不是改成js0=0;要不就改下面的。
改完了看看,如果再有错就是越界问题了,这个也不难改关键看你变量的取值范围、可能超出矩阵的最大围数了~-~
for(i=1:flsz(x))
for(j=1:Sz0(i))Sz1(j)=Sz(js0+j);end (Matlab中说错误发生在这一句)
for(j=1:n)for(y=1:Sz0(i))if(xhsz(j)==Sz1(y))js0=js0+1;Sz(js0)=xhsz
这里面的js=0;和下面的js0不对应呀,是不是改成js0=0;要不就改下面的。
改完了看看,如果再有错就是越界问题了,这个也不难改关键看你变量的取值范围、可能超出矩阵的最大围数了~-~
展开全部
f1,n都没初始值
把matlab的代码写成这样,真是汗。。。
matlab的for语句后面不用加()的。
每一行语句单独一行,要不然看起很乱很费劲。
把matlab的代码写成这样,真是汗。。。
matlab的for语句后面不用加()的。
每一行语句单独一行,要不然看起很乱很费劲。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组索引出界
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
检查一下你所操作的数组下标是否越界.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询