我是Matlab的新手。我用i到m做了一个for循环,j到n。我写了这段代码来获取矩阵的子矩阵,但它一直给我这个错误
下标索引必须是实数正整数或逻辑。 这是代码
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
我写了如果声明和回合来纠正它但它不起作用。请帮帮我怎么解决这个问题?
答案 0 :(得分:0)
edgeib = CenteriSE - (-1)*(i-CenteriSE);
相当于edgeib=i
的{{1}}。
现在,如果您转到上一个语句i=1
,那么您正在执行B = circles(i-round(bok1):i+round(bok2),j-round(bok3):j+round(bok4));
,i-round(bok1)
只有i-i=0
。 Matlab的索引从1开始,这就是你得到这个错误的原因。