How can I use a vector inside an @fun?

Hello everyone,
I want to define a function like "fun = @(x) sin(a*x)" where "a" is a vector of n dimention.
Do you have any idea?
Thank you for your support.
Greetings.

 Respuesta aceptada

Artemio Soto Breceda
Artemio Soto Breceda el 22 de Oct. de 2019
I might not be understanding your question properly, but it looks like your code works just fine. Here is an example:
a = linspace(0,2*pi,1000); % Create a vector of dimension N = 1000 with values increasing
% linearly from 0 to 2*pi
fun = @(x) sin(a*x); % Define your function
plot(a, fun(1)); % plot 1 period of the sine wave (from 0 to 2*pi);
hold
plot(a, fun(2)); % x = 2
plot(a, fun(4)); % x = 4
sinewave_example.png
I made a a 1000 elements vector, then used your exact code to define fun, and used the new function with three different inputs. Works perfectly as you wrote it.

2 comentarios

Walter Roberson
Walter Roberson el 23 de Oct. de 2019
I agree, in the context provided, using a vector or matrix inside an anonymous function is not a problem.
The kinds of problems that can arise:
  • the majority of the time you should use the vector operations such as .* and .^ and ./ instead of * and ^ and /
  • fzero and the minimizers such as fmincon cannot work with vectors or arrays being returned: gamultiobj is the only minimizer that can work with vectors being returned
  • integral() can only deal with vectors or arrays being returned if you use the 'arrayvalued' option
  • integral2() cannot deal with vectors or arrays being returned
  • if you are using arrayfun() or cellfun() or stuctfun() then you need to use 'uniform', 0 to return non-scalars
Carlos Zúñiga
Carlos Zúñiga el 31 de Ag. de 2020
Thank you!

Iniciar sesión para comentar.

Más respuestas (1)

Joe Vinciguerra
Joe Vinciguerra el 23 de Oct. de 2019

0 votos

Assign 'a' first, then assign 'fun'. In your application I don't believe you can do it the other way around.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by