Получение индекса элемента в spfun, cellfun, arrayfun и т. Д. В MATLAB

Есть ли способ получить индекс элемента, для которого функция вызывается из 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 , который, как можно утверждать, ссылается на местоположение (~ индекс) текущего элемент в полном объекте (изображение в данном случае):

block_struct.location: Двухэлементный вектор [row col], который определяет положение первого пикселя (минимальная строка, минимальный столбец) данных блока во входном изображении.

13
задан Amelio Vazquez-Reina 12 October 2011 в 14:37
поделиться