Quiero aplicar una función a cada elemento de una matriz de celdas, así que tengo cellfun
para eso. Sin embargo, la función toma dos argumentos adicionales (una cadena y un vector), que quiero mantener constante para todos los elementos de la matriz de celdas; es decir, me gustaría hacer algo como:¿Cómo aplicar cellfun (o arrayfun o structfun) con argumentos de entrada adicionales constantes?
cellfun(@myfun, cellarray, const1, const2)
significa:
for i = 1:numel(cellarray),
myfun(cellarray{i}, const1, const2);
end
¿Hay alguna manera de hacerlo sin crear matrices de células intermedias que contienen copias de numel(cellarray)
const1
y const2
?
Actualmente estoy usando esta solución, pero ¿hay alguna otra? Para arreglos grandes, puede producir una cantidad considerable de sobrecarga. ¿Es la única alternativa para crear una matriz de copias de 'const1, const2' (no es una buena alternativ)? – embert
@embert No estoy seguro de dónde vendría la sobrecarga adicional, pero quizás podrías usar el generador de perfiles para averiguarlo. También probaría la alternativa for loop en la pregunta, ya que los bucles for no incurren en el tipo de penalización que solían tener en MATLAB (a veces incluso son la alternativa más rápida). – gnovice