2011-06-27 21 views
5

Matlab tiene una buena propiedad que las funciones escalares (como sin) pueden trabajar en matrices, operar en cualquier elemento de la matriz y devolver una matriz como resultado.Matlab: ¿ejecuta una función con parámetros para cada elemento de una matriz?

Tengo una función escalar f(x,p) donde x es un escalar, y p es un parámetro (en realidad un conjunto de parámetros). Dado un parámetro fijo p, deseo ejecutar f(x,p) en una matriz A. En un lenguaje como el rubí que se vería así:

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

Pero no tengo idea de cómo hacerlo en Matlab para las funciones que aceptan parámetros y no sólo el escalar de la matriz quiero operar.

+0

posible duplicado de la función [Map in MATLAB?] (Http://stackoverflow.com/questions/983163/map-function-in-matlab) – Amro

Respuesta

7

El equivalente de MATLAB es proporcionar un identificador de función tomando solo un argumento y enviándolo a arrayfun.

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

Por ejemplo,

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

Tenga en cuenta que la anonymous function crea un cierre, capturando el valor de p.

Cuestiones relacionadas