MATLAB: применить функцию к каждому n элементов в векторе - PullRequest
0 голосов
/ 22 декабря 2011

Этот связанный вопрос Как я могу применить функцию к каждой строке / столбцу матрицы в MATLAB? , кажется, указывает на один из способов сделать это, используя num2cell, от которого я как бы хочу держаться подальше,

Вот что я хочу сделать.У меня есть список индексов для треугольной сетки, индексы индексируют список вершин.

Я хочу запустить func (a, b, c) для первых 3 индексов, затем для следующих трех индексов и так далее.

Итак, я мог reshape(idxs,3,[]), так что теперь я собрал свои данные в триплеты в виде векторов столбцов.Но arrayfun не делает то, что я хочу.

Ищет что-то вроде оператора карты столбца.

1 Ответ

2 голосов
/ 22 декабря 2011

Во-первых, при необходимости получите func правильно векторизованным, чтобы аргументы могли быть списками равной длины:

vec_func = @(a,b,c)(arrayfun(@func,a,b,c))

Затем вы можете напрямую получить доступ к каждому третьему элементу idxs:

vec_func( idxs(1:3:end), idxs(2:3:end), idxs(3:3:end) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...