如何纠正;下标索引必须是实正整数或逻辑数;在Matlab中我的代码?

如何纠正;下标索引必须是实正整数或逻辑数;在Matlab中我的代码?,matlab,Matlab,我对Matlab很陌生。我用I到m,j到n做了一个for循环。我写这段代码是为了获取矩阵的子矩阵,但它总是给我这个错误 下标索引必须是实正整数或逻辑数。 这是密码 for i=1:m, for j = 1:n, display(i); display(j); edgeil = 2; edgeib = 2; edgejb = 2; edgejl = 2; if((i-CenteriSE)< 0)

我对Matlab很陌生。我用I到m,j到n做了一个for循环。我写这段代码是为了获取矩阵的子矩阵,但它总是给我这个错误

下标索引必须是实正整数或逻辑数。 这是密码

for i=1:m,
for j = 1:n,
    display(i);
    display(j);

            edgeil = 2;
    edgeib = 2; 
    edgejb = 2; 
    edgejl = 2;


    if((i-CenteriSE)< 0)
       edgeib = CenteriSE - (-1)*(i-CenteriSE);

    end
    if((i+ CenteriSE)> m)
        temp = i+ CenteriSE - m;
        edgeil = CenteriSE - temp;
    end

    if((j-CenterjSE)< 0)
        edgejb = CenterjSE- (-1)*(j-CenterjSE);

    end
    if((j+ CenterjSE)> n)
        temp2 = j+ CenterjSE - n;
        edgejl = CenterjSE - temp2;
    end

    bok1 = round(edgeib);
    bok2 = round(edgeil);
    bok3 = round(edgejb);
    bok4 = round(edgejl);
    display(bok1);
    display(bok2);
    if( (bok1 == round(bok1)) && (bok2 == round(bok2)) && (bok3 == round(bok3)) && (bok4 == round(bok4)))
    B = circles(i-round(bok1):i+round(bok2),j-round(bok3):j+round(bok4));
    end
对于i=1:m,
对于j=1:n,
显示(i);
显示器(j);
edgeil=2;
edgeib=2;
edgejb=2;
edgejl=2;
如果((i-中心化)<0)
edgeib=中心线-(-1)*(i-中心线);
结束
如果((i+中心线)>m)
温度=i+中心线-m;
边缘=中心-温度;
结束
如果((j-CenterjSE)<0)
edgejb=CenterjSE-(-1)*(j-CenterjSE);
结束
如果((j+CenterjSE)>n)
temp2=j+CenterjSE-n;
edgejl=中心JSE-临时2;
结束
bok1=圆形(边缘);
bok2=圆形(边缘);
bok3=圆形(edgejb);
bok4=圆形(edgejl);
显示器(bok1);
显示器(bok2);
如果((bok1==轮(bok1))&&&(bok2==轮(bok2))&&&(bok3==轮(bok3))&&&(bok4==轮(bok4)))
B=圆(i-圆(bok1):i+圆(bok2),j-圆(bok3):j+圆(bok4));
结束

我写了if语句和round s来纠正它,但它不起作用。请帮助我如何解决这个问题?

嗯,很简单。首先,让我们把所有的杂物都清除掉。你说CenteriSE=2,那么这个语句

edgeib=中心线-(-1)*(i-中心线)i=1
,code>相当于
edgeib=i


现在,如果你回到你的最后一句话,
B=circles(i-round(bok1):i+round(bok2),j-round(bok3):j+round(bok4)),您正在执行
i-round(bok1)
,当
i=1
时,这只是
i-i=0
。Matlab的索引从1开始,这就是为什么会出现此错误。

CenteriSE和CenterjSE都是2。它没有超出范围。我也使用了abs(..),但我不知道为什么id总是给我那个错误。请帮个忙?上面写的是哪一行?您是否尝试过
圆形(圆形(i-bok1):圆形(i+bok2),圆形(j-bok3):圆形(j+bok4))?(那里可能会有一个关闭…)也看看。是的,谢谢。我在检查我的方程式后意识到了这一点。我的数学不是很好:)