Есть ли способ получить index элемента, на котором действует функция, вызванная cellfun
, arrayfun
или spfun
? (то есть получить индекс элемента в рамках функции).
Ради простоты представьте, что у меня есть следующий пример игрушки:
S = spdiags([1:4]',0,4,4)
f = spfun(@(x) 2*x,S)
, которая строит разреженную диагональную матрицу 4x4, а затем умножает каждый элемент на 2
.
И скажем, что теперь вместо умножения каждого элемента на постоянное число 2
я бы хотел умножить его на индекс, который элемент имеет в исходной матрице , т.е. предполагая, что linear_index
содержит индекс для каждого элемента, это будет что-то вроде этого:
S = spdiags([1:4]',0,4,4)
f = spfun(@(x) linear_index*x,S)
Однако обратите внимание, что приведенный выше код не работает (linear_index
не объявлен).
Этот вопрос частично мотивирован тем фактом, что blocproc
дает вам доступ к block_struct.location
, который, как можно утверждать, ссылается на местоположение (~ index) текущего элемента в пределах full объект (изображение в данном случае):
block_struct.location:
Двухэлементный вектор [row col], который определяет
положение первого пикселя (минимальная строка, минимальная колонка)
блокировать данные во входном изображении.