Matlab - запуск функции с параметрами для каждого элемента массива? - PullRequest
5 голосов
/ 27 июня 2011

Matlab обладает хорошим свойством, что скалярные функции (например, sin) могут работать с массивами, работать с любым элементом массива и возвращать массив как результат.

У меня есть скалярная функция f(x,p), гдеx - это скаляр, а p - это параметр (на самом деле массив параметров).Учитывая фиксированный параметр p, я хочу запустить f(x,p) для массива A.На языке, подобном Ruby, это выглядело бы так:

A.collect{|x| f(x,p)}

Но я понятия не имею, как это сделать в Matlab для функций, которые принимают параметры, а не только скаляр из массива, над которым я хочу работать.

1 Ответ

7 голосов
/ 27 июня 2011

Эквивалентом MATLAB является предоставление дескриптора функции, принимающего только один аргумент, и отправка его в arrayfun.

arrayfun( @(x) f(x, p), A )

Например,

A = 1:10;
p = 2;
arrayfun( @(x) x.^p, A )

Обратите внимание, что анонимная функция создает замыкание, фиксируя значение p.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...