Passing array arguments to an anonymous function
13 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have an anonymous function, for example
f = @(x,y)x.^2.*y.^2
In general for my problem I don't know how many arguments f will have. Nor do I know how many elements each argument will have.
I want to pass in a single element as an argument. If x and y are scalars, I can define z = num2cell(x,y), then write
f(z{:})
But if x and y are vectors this doesn't work. I could write
for ii=1:2; z = { x(ii);y(ii) }; f(z{:}) ;end
but of course I want to avoid the loop.
Is there some efficient way to obtain what I want by writing something like
f(q{:})
where q{:} is a cell array with each cell containing a vector rather than a scalar.
1 comentario
Walter Roberson
el 26 de Feb. de 2013
num2cell(x,y) is not the same thing as {x,y} when x and y are scalars. Instead num2cell(x,y) says to use y as the dimension number for the num2cell(x) operation.
Respuesta aceptada
Walter Roberson
el 26 de Feb. de 2013
It appears to me that what you want is arrayfun:
arrayfun(f, x, y)
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!