Bonsoir,

Apr�s avoir �crit une fonction sous Matlab me permettant de calculer l'ensemble des combinaisons possibles d'allocations de portefeuilles comme ci-dessous :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
t{1} = 0:0.1:1;
t{2} = 0:0.2:1;
t{3} = 0:0.5:1;
resultattemporaire = [];
resultat = [];
resultat = allocation(t,resultattemporaire,resultat);
Avec la fonction r�cursive allocation :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
function resultat = allocation(t,resultattemporaire,resultat)
 
indice = length(resultattemporaire)+1;
for k=1:length(t{indice})
    if sum(resultattemporaire)+t{indice}(k)<=1 && indice<numel(t)
        resultattemporaire2 = [resultattemporaire t{indice}(k)];
        resultat = allocation(t,resultattemporaire2,resultat);
    elseif sum(resultattemporaire)+t{indice}(k)==1 && indice==numel(t)
        resultat = [resultat;[resultattemporaire t{indice}(k)]];
    end
end
Me donne toutes les combinaisons < 1 de t{1} � t{3} suivant les pas d'incr�mentations t{2}

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>> resultat
 
resultat =
 
         0         0    1.0000
         0    1.0000         0
    0.1000    0.4000    0.5000
    0.2000    0.8000         0
    0.3000    0.2000    0.5000
    0.4000    0.6000         0
    0.5000         0    0.5000
    0.6000    0.4000         0
    0.8000    0.2000         0
    1.0000         0         0
Le soucis est que pour des vecteurs de 50 lignes par exemple, le temps d'execution de cette fonction est extr�ment long
Je souhaite donc re-�crire la fonction allocation.m en C++ puis la convertire en format MEX en esp�rant r�duire le temps de calcul sous Matlab.

Le fait est que j'ai beaucoup de mal � �crire cette fonction r�cursive en C++ En fait j'ai du mal avec toutes les fonctions r�cursives .

Une aide serait la bienvenue

Merci !