conversion MatLab vers VBA
Bonjour tout le monde, :D
j'ai fais un programme matlab mais je voudrais le "convertir" en VBA pour pouvoir l'utiliser sous excel (car il n'y a pas matlab à mon stage).
Je ne connais pas du tout VBA et je voudrais savoir si il est possible que vous me donnier les fonctions equivalentes à celles que j'ai écris ci dessous en langage matlab.
Le principale probleme est je pense le lancement du solveur d'excel... :euh:
Merci d'avance
Voici mon main:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| beta1=5; %on definit les paramètres initiaux à tester
beta2=4;
vecteurDeBeta=[beta1 beta2];
%%%%%%%%%%%%%%%%%%%%%%%%%
%je lance ma fonction qui me permet d'avoir l'erreur à minimiser
MonErreurAminimiser=erreur(vecteurDeBeta);
%%%%%%%%%%%%%%%%%%%%%%%%%
%on lance une optimisation pour avoir les paramètres optimisés, c'est à dire ceux
%qui minimisent l'erreur
vecteurDeParametreOptimises=solveur(vecteurDeBeta,@erreur(vecteurDeBeta),1e-6);
%je donne au solveur les parametres initiaux, un pointeur vers la fonction qui
%calcul l'erreur, et enfin la limite en dessous de laquelle je veux que l'erreur se trouve |
Voici la fonction erreur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| function MonErreurAminimiser=erreur(vecteurDeBeta)
delete('1990.csv'); % on efface le fichier 1990.csv du repertoire
%on va remplacer les paramères du fichier beta.inp par ceux ci
delete('beta.inp'); %on supprime le fichier beta existant
%on réécrit un nouveau inp où il y aura nos paramètres à tester
fichierBeta = fopen('beta.inp','wt');
%on écrit trois ligne avec beta=valeur de notre parametre à écrire
fprintf(fichierBeta,'beta=%g\n'), vecteurDeBeta(1));
fprintf(fichierBeta,'beta=%g\n'), vecteurDeBeta(2));
fclose(fichierBeta);%on a fini on ferme le fichier
%on lance notre calcul
dos('ansys=dynamique.inp');
%on attend l'écriture du fichier résultat
f=which('1990.csv'); %cherche le fichier .csv ds le repertoire
while isempty(f) %temps que variable f est vide on continue à attendre
f=which('1990.csv'); %regarder si le fichier est apparu
end; %si le fichier est apparu on sort de la boucle
%-------------
%on recupére les données expérimentales qui se trouve dans excel
ToutesColonnesExp = load('experimental.xls');
%je choisie la 2eme colonne et toute ses lignes
donneesExp = ToutesColonnesExp(:,2);
%je recupére les données du calcul
ToutesColonnesNum = load('1990.csv');
%je concerve que la onzieme colonne de la ligne 2 à la dernière
donneesNum = ToutesColonnesExp(2:end,11);
%-------------
%je calcul l'erreur entre les 2 colonnes, pour cela je fais une boucle sur
%toutes les lignes et je soustrais les résultats expérimentaux aux Num
erreur=0;
for i=1:1:length(donneesExp)
erreur=erreur+(donneesExp(i)-donneesNum(i))*(donneesExp(i)-donneesNum(i));
end
%------------
MonErreurAminimise=erreur;
end |
j'espere que vous pourrez m'aidez...:calim2: