Как исправить «Индексы индексов должны быть либо натуральными натуральными числами, либо логическими числами».в Matlab в моем коде? - PullRequest
0 голосов
/ 06 марта 2011

Я очень новичок в Matlab.Я сделал цикл с i до m, а 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

Я написал, что если заявление и раунд s исправить его, но оно не работает.Пожалуйста, помогите мне, как я могу это исправить?

1 Ответ

0 голосов
/ 06 марта 2011

ну, это просто.сначала давайте просто удалим все беспорядок.Вы говорите CenteriSE = 2, так что это утверждение

edgeib = CenteriSE - (-1)*(i-CenteriSE); эквивалентно edgeib=i для i=1.

Теперь, если вы переходите к своему последнему утверждению, B = circles(i-round(bok1):i+round(bok2),j-round(bok3):j+round(bok4));, вы делаете i-round(bok1), что просто i-i=0, когда i=1.Индексация Matlab начинается с 1, и именно поэтому вы получаете эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...