2013-03-02 6 views
1

Есть ли простой способ применить функцию Foo к множеству массивов (матриц) A, B, C, помимо создания большего массива?Применить функцию к нескольким массивам в Matlab

По существу я хочу что-то похожее на «карту» в Python, как:

 
L = [A, B, C] 
map(foo, L) 

Давайте предположим, что в случаях, 1. функция Foo применяется покомпонентно, не меняет размерность матрицы, например, log(), exp(). 2. Функция - это общая функция, работающая на всей матрице, например, removerows().

+1

См. Мой ответ на связанный вопрос. Функция 'cellfun' может делать то, что вы хотите. – kwatford

ответ

1

Там нет встроенного в аналоге на «карту» в MATLAB по умолчанию. Однако вы всегда можете написать свои функции самостоятельно; это было сделано here. Поместите в свой мусорный ящик MATLAB, и вы должны быть готовы к работе.

Если вы хотите, чтобы ваш код был переносимым через системы, я бы рекомендовал простой цикл.

0

Вы можете использовать varargin и varargout, чтобы создать функцию, которая принимает произвольное количество входов и производит произвольное количество выходов.

Итак вы могли бы написать:

[D, E, F] = map(foo, A, B, C); 
Смежные вопросы