sum (Array) говорит, что индекс превышает размеры матрицы - PullRequest
4 голосов
/ 22 октября 2010


Я новичок в Matlab. Я пытался сопоставить изображения. Изображение X больше, а изображение Y меньше. Наша цель - найти все возможные совпадения y с x, а затем вычислить сумму квадратичных разностей для RGB для каждого такого перекрытие (то есть x ^ 2 + y ^ 2 + z ^ 2). Так что я нахожу местоположение (i, j) в увеличенном изображении, где мы выбираем плитку и сопоставляем. Если быть точным, вот код: -

a=size(X,1)-size(Y,1);
b=size(X,2)-size(Y,2);
Z=ones(a,b);

for i=1:a
for j=1:b 
    A=[X(i:i+size(Y,1)-1,j:j+size(Y,2)-1,1)-Y(1:end,1:end,1)].^2;
    B=[X(i:i+size(Y,1)-1,j:j+size(Y,2)-1,2)-Y(1:end,1:end,2)].^2;
    C=[X(i:i+size(Y,1)-1,j:j+size(Y,2)-1,3)-Y(1:end,1:end,3)].^2;           
    T=A+B+C
    size(T)
    P=sum(sum(T))
    %Z(i,j)=sum(sum(T));
end;    
end;    

Теперь проблема состоит в том, что строка (sum (T)) выдает ошибку: «Индекс превышает размерность матрицы». Может кто-нибудь помочь? Моя цель - сложить все эти различия и поместить их в матрицу Z.

1 Ответ

17 голосов
/ 22 октября 2010

Единственный способ получить такую ​​ошибку - если вы объявили переменную sum где-то.

Запустите clear sum (или clear all, или перезапустите Matlab) и попробуйте снова, тогда все должно работать нормально.

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