matlab编程中的数据越界问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 05:30:03
本人对程序一窍不通,请高手指点,在线急等。
在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

请高手教我怎样更正错误的编程代码,万分感谢~!

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;要不就改下面的。
改完了看看,如果再有错就是越界问题了,这个也不难改关键看你变量的取值范围、可能超出矩阵的最大围数了~-~

f1,n都没初始值
把matlab的代码写成这样,真是汗。。。
matlab的for语句后面不用加()的。
每一行语句单独一行,要不然看起很乱很费劲。

数组索引出界

检查一下你所操作的数组下标是否越界.