<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#330000">
On 01/06/2012 22:56, Binoyte wrote:
<blockquote
cite="mid:CAJO2YB5KMAAkxYLz6-MBELf3ALHPMpEPjF4-jtSSMgeORPiZBA@mail.gmail.com"
type="cite">Bonjour,<br>
<br>
je voudrais savoir si il est possible de passer les arguments par
référence a une fonction écrite en Scilab. En gros je cherche une
analogie à l'écriture C++ suivante : <br>
<br>
<span style="font-family:courier
new,monospace;background-color:rgb(255,255,255);color:rgb(0,0,153)">void
ma_fonction(struct & parametre) </span><br
style="font-family:courier
new,monospace;background-color:rgb(255,255,255);color:rgb(0,0,153)">
<span style="font-family:courier
new,monospace;background-color:rgb(255,255,255);color:rgb(0,0,153)"><span
style=""></span>{</span><br style="font-family:courier
new,monospace;background-color:rgb(255,255,255);color:rgb(0,0,153)">
<br style="font-family:courier
new,monospace;background-color:rgb(255,255,255);color:rgb(0,0,153)">
<span style="font-family:courier
new,monospace;background-color:rgb(255,255,255);color:rgb(0,0,153)">
parametre.propriete = ....;</span><br
style="font-family:courier
new,monospace;background-color:rgb(255,255,255);color:rgb(0,0,153)">
<br style="font-family:courier
new,monospace;background-color:rgb(255,255,255);color:rgb(0,0,153)">
<span style="font-family:courier
new,monospace;background-color:rgb(255,255,255);color:rgb(0,0,153)">}</span><br
style="color:rgb(0,0,153);background-color:rgb(255,255,255)">
<br>
<br>
En Scilab je ne trouve pas trop d'autres solutions que d'écrire :
<br>
<br>
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)">function this = ma_fonction
(parametre)</span><br style="font-family:courier
new,monospace;color:rgb(51,51,153)">
<br style="font-family:courier new,monospace;color:rgb(51,51,153)">
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)"> this = parametre;</span><br
style="font-family:courier new,monospace;color:rgb(51,51,153)">
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)"> this.propriete = .....</span><br
style="font-family:courier new,monospace;color:rgb(51,51,153)">
<br style="font-family:courier new,monospace;color:rgb(51,51,153)">
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)">endfunction</span><br>
<br>
<br>
Le problème c'est qu'avec la version Scilab on fait d'abord une
copie de la variable, ça prend du temps et beaucoup de ressources.
D'autant qu'ensuite, dans mon programme, les fonctions sont
appelées de nombreuses fois vue que je lance par la suite des
fonctions d’optimisation. J'utilise des structures qui décrivent
les composants mécaniques d'un système. L’optimisation peut faire
varier le nombre de composants. Dans ce cas je ne pense pas
pouvoir utiliser les variables globales, en tout cas, pas selon
l'exemple ci- après :<br>
<br>
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)">function ma_fonction
(parametre)</span><br style="font-family:courier
new,monospace;color:rgb(51,51,153)">
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)"> </span><br
style="font-family:courier new,monospace;color:rgb(51,51,153)">
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)"> global parametre;</span><br
style="font-family:courier new,monospace;color:rgb(51,51,153)">
<br style="font-family:courier new,monospace;color:rgb(51,51,153)">
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)"> parametre.propriete =
.....</span><br style="font-family:courier
new,monospace;color:rgb(51,51,153)">
<br style="font-family:courier new,monospace;color:rgb(51,51,153)">
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)">endfunction</span><br
style="font-family:courier new,monospace;color:rgb(51,51,153)">
<br style="font-family:courier new,monospace;color:rgb(51,51,153)">
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)">//************</span><br
style="font-family:courier new,monospace;color:rgb(51,51,153)">
<br style="font-family:courier new,monospace;color:rgb(51,51,153)">
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)">global Monsieur;</span><br
style="font-family:courier new,monospace;color:rgb(51,51,153)">
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)">Monsieur.Age = 31;</span><br
style="font-family:courier new,monospace;color:rgb(51,51,153)">
<br style="font-family:courier new,monospace;color:rgb(51,51,153)">
<span style="font-family:courier
new,monospace;color:rgb(51,51,153)">ma_fonction(Monsieur);</span><br>
<br>
Je vous remercie par avance de vos conseils.<br>
<br>
Cordialement,<br>
<br>
</blockquote>
En fait je ne suis pas sur de comprendre votre exemple<br>
<br>
ma_fonction ne devrait-elle pas déclarer Monsieur comme global,
plutot que de le prendre comme argument? (comme le a dans mon
premier mail)<br>
<br>
allez vous utiliser un fsolve ou tout autre routine scilab pour
l'optimisation? si ce n'est pas le cas, je ne vois pas à priori
pourquoi vous ne pourriez pas utiliser de variables globales.<br>
<br>
PS: êtes vous sur que la copie des arguments de vos fonctions occupe
une part significative du temps de calcul? <br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</body>
</html>