why can't I get a vector as an output while using a constant in the function handle ?

3 vues (au cours des 30 derniers jours)
ahmad
ahmad le 5 Fév 2014
Commenté : Walter Roberson le 5 Fév 2014
I define the following constant function
f=@(x,y)0;
and I define the following vector
z=[1 2; 3 4; 5 6];
I want to evaluate the function f using feval
feval(f,z(:,1),z(:,2));
my question is that why can't I get the output as a vector instead of a scalar ?

Réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 5 Fév 2014
Modifié(e) : Azzi Abdelmalek le 5 Fév 2014
Because that's what your function do, the result is always 0, it's independent of your inputs
  5 commentaires
ahmad
ahmad le 5 Fév 2014
but shouldn't I get the output in the same size as the input ?
Azzi Abdelmalek
Azzi Abdelmalek le 5 Fév 2014
Modifié(e) : Azzi Abdelmalek le 5 Fév 2014
I will give you a mathematical example
f(t)=10
The output is always 10, give any value for t, the output will not change
f(0)=10
f(100)=10
The same for your function
f=@(x,y)0
The result is independent of x and y, the result will be always 0. you can connect the size of your output to your input by
f=@(x,y) zeros(size(x))
or
f=@(x,y) x*0

Connectez-vous pour commenter.


Walter Roberson
Walter Roberson le 5 Fév 2014
f = @(x,y) zeros(size(x));
  1 commentaire
Walter Roberson
Walter Roberson le 5 Fév 2014
If you want to execute a function once for each input in a vector, you can use arrayfun
arrayfun(f, z(:,1), z(:,2))

Connectez-vous pour commenter.

Catégories

En savoir plus sur Performance and Memory dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by