Matrix with function handle: how to evaluate for a vector

Hello everyone,
Is there a way, if given a certain matrix with some function handles of n variables, to evaluate it with of vector giving values to those n variables?
Here's my exemple to make it clearer:
I have this matrix that is given has an input for a fucntion I'm coding:
J = @(x,y,z)[2*exp(2*x),0,-cos(x);-1,1,0;0,2*z,1]
And I have the vector:
X=[1;1;1] (I also tried writing it as X=[1,1,1])
And I would like to evaluate J with X in my code, but nothing I tried seems to work. Both J(X) and feval(J,X) return errors. Basically I would like to have the matrix J(1,1,1) without having to write it that way because I would like to directly take my matrix input to evaluate it with the vector input. Is there a way to do it?

 Réponse acceptée

Matt J
Matt J le 17 Mar 2021
Modifié(e) : Matt J le 17 Mar 2021
Write J so that it has single argument syntax,
J = @(xyz) [2*exp(2*xyz(1)),0,-cos(xyz(1));-1,1,0;0,2*xyz(3),1];
X=[1;1;1];
J(X)
ans = 3×3
14.7781 0 -0.5403 -1.0000 1.0000 0 0 2.0000 1.0000

2 commentaires

Thank you! :)
You're welcome, but please Accept-click the preferred answer your problem.

Connectez-vous pour commenter.

Plus de réponses (1)

J3 = @(V)J(V(1),V(2),V(3))
However if you happen to be generating the J function using the Symbolic toolbox then see the Vars option for matlabFunction, in particular 'vars', {[x, y, z]} would cause the generated function to expect a row vector of values.

Catégories

En savoir plus sur Mathematics dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by