Как векторизовать * заданную * функцию MATLAB?

Это может быть что-то глупое, но в основном у меня есть функция в MATLAB, называемая wavedec. Эта функция выполняет вейвлет-разложение вектора.

Теперь, глядя на документацию, вход этой функции должен быть вектором.

Однако, что, если у меня есть матрица, и я хочу вызвать эту функцию для каждого столбца матрицы? В худшем случае я могу положить его в цикл, но мне было интересно, был ли более элегантный способ. (Может быть, с arrayfun? Я не знаю).

Благодарю.

1 ответ

Можно использовать cellfun, вам нужно преобразовать матрицу в ячейку векторов:

mat2cell(M,size(M,1),ones(size(M,2),1))

Оба, cellfun и arrayfun внутренне работают итеративно, что означает, что он не быстрее, чем цикл for.

licensed under cc by-sa 3.0 with attribution.