[MATLAB] Petit problème sur une fonction

Résolu/Fermé
Newenda Messages postés 75 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 26 avril 2021 - 13 déc. 2008 à 11:07
Newenda Messages postés 75 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 26 avril 2021 - 13 déc. 2008 à 12:03
Bonjour,

J'ai fait comme fonction :

*************************************
function [A]=calculA(E, X, Y, x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6)


A1=log( exp(E) / ( sqrt( (X-x1)^2 + (Y-y1)^2 ) ) );
A2=log( exp(E) / ( sqrt( (X-x2)^2 + (Y-y2)^2 ) ) );
A3=log( exp(E) / ( sqrt( (X-x3)^2 + (Y-y3)^2 ) ) );
A4=log( exp(E) / ( sqrt( (X-x4)^2 + (Y-y4)^2 ) ) );
A5=log( exp(E) / ( sqrt( (X-x5)^2 + (Y-y5)^2 ) ) );
A6=log( exp(E) / ( sqrt( (X-x6)^2 + (Y-y6)^2 ) ) );

A=[A1;A2;A3;A4;A5;A6]
*************************************

je fais un test du style :

*************************************
clear all
mprior = [log(15) 4 13 3 12 7 18 15 19 2 6 12 13 17 2];
F=calculA(mprior)
*************************************

...mais il veut pas, cependant ça marche si j'écris :

**********************************
F = calculA(log(15), 4, 13, 3, 12, 7, 18, 15, 19, 2, 6, 12, 13, 17, 2)
**********************************
mais j'aimerais rentré directement la matrice et pas tous les arguments à chaque fois...

Merci pour votre aide,

1 réponse

Newenda Messages postés 75 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 26 avril 2021 23
13 déc. 2008 à 12:03
Ok c'est bon j'ai résolu en écrivant la fonction comme telle :

******************
function A = calculA(V);

A1=log( exp(V(1,1)) ./ ( sqrt( (V(1,2)-V(1,4)).^2 + (V(1,3)-V(1,10)).^2 ) ) );
A2=log( exp(V(1,1)) ./ ( sqrt( (V(1,2)-V(1,5)).^2 + (V(1,3)-V(1,11)).^2 ) ) );
A3=log( exp(V(1,1)) ./ ( sqrt( (V(1,2)-V(1,6)).^2 + (V(1,3)-V(1,12)).^2 ) ) );
A4=log( exp(V(1,1)) ./ ( sqrt( (V(1,2)-V(1,7)).^2 + (V(1,3)-V(1,13)).^2 ) ) );
A5=log( exp(V(1,1)) ./ ( sqrt( (V(1,2)-V(1,8)).^2 + (V(1,3)-V(1,14)).^2 ) ) );
A6=log( exp(V(1,1)) ./ ( sqrt( (V(1,2)-V(1,9)).^2 + (V(1,3)-V(1,15)).^2 ) ) );

A=[A1;A2;A3;A4;A5;A6];
******************
0