Матрица автоматической обработки MATLAB вне границ с Give 0 - PullRequest
0 голосов
/ 28 ноября 2011

Я бы хотел автоматически обрабатывать массив за пределами доступа к индексу, задав вместо него 0.

Но теперь у меня есть код типа

evenIndexNext = 2*j+1 + 2*i ;
oddIndexPrev = 2*j+1 - i ;
evenValueNext = 0 ;
oddValuePrev = 0 ;
if( evenIndexNext <= n )
  evenValueNext = s( evenIndexNext ) ;
end
if( oddIndexPrev >= 1 ) 
  oddValuePrev = s( oddIndexPrev ) ;
end

Где s - массив. Немного неуклюже.

Ответы [ 2 ]

2 голосов
/ 28 ноября 2011

Может быть, вы могли бы сделать:

try
  evenValueNext = s( evenIndexNext ) ;
catch
  evenValueNext=0;
end

или вы можете определить функцию для этого:

function y=checkBound(l,i)
  if (i<1) || (i>numel(l))
    y=0;
  else
    y=l(i);
  end
end

evenValueNext = checkBound(s,evenIndexNext);
oddValuePrev = checkBound(s,oddIndexPrev) ;
0 голосов
/ 28 ноября 2011

Вы можете определить новый класс для обработки этого. Если вы перегрузили метод subsref класса, вы можете указать ему проверить, не вышел ли индекс за пределы, и вернуть 0, если это так.

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